Модификатор presentationDetents() в SwiftUI
Этот модификатор помогает установить, какого размера должен быть отображаемый Sheet. Что интересно – он работает и с Popover, для которого тоже можно кастомизировать размер.
Этот модификатор помогает установить, какого размера должен быть отображаемый Sheet. Что интересно – он работает и с Popover, для которого тоже можно кастомизировать размер.
AppBox – инструмент для распространения сборок через Dropbox
С помощью AppBox можно распространять все виды сборок – Development, Ad-Hoc и Enterprise. Сервис полностью бесплатный, простой в использовании, интегрируется с Fastlane.
С помощью AppBox можно распространять все виды сборок – Development, Ad-Hoc и Enterprise. Сервис полностью бесплатный, простой в использовании, интегрируется с Fastlane.
Lighter – генератор Swift-врапперов для SQLite базы
Lighter берет схему SQLite базы и генерирует из нее набор соответствующих Swift структур. Дальше их можно использовать двумя способами – встроенным в Lighter API для работы с базой или, не затаскивая дополнительных зависимостей, создавать соединение с базой вручную. Интегрируется в проект с помощью SwiftPM Plugins.
Lighter берет схему SQLite базы и генерирует из нее набор соответствующих Swift структур. Дальше их можно использовать двумя способами – встроенным в Lighter API для работы с базой или, не затаскивая дополнительных зависимостей, создавать соединение с базой вручную. Интегрируется в проект с помощью SwiftPM Plugins.
Изменения в отображении ViewController’ов в iPadOS 16
Огромный анализ всех изменений в отображении, которые произошли с разными видами ViewController’ов. Посмотрите, насколько это коснется вас, и решите – надо ли адаптироваться или использовать предложенные воркэраунды.
Огромный анализ всех изменений в отображении, которые произошли с разными видами ViewController’ов. Посмотрите, насколько это коснется вас, и решите – надо ли адаптироваться или использовать предложенные воркэраунды.
TCA Action Boundaries
При использовании архитектуры TCA в очень больших приложениях возникают проблемы, которые не решаются стандартными подходами. В статье разбирается какую проблему несет в себе стандартная реализация Action.
При использовании архитектуры TCA в очень больших приложениях возникают проблемы, которые не решаются стандартными подходами. В статье разбирается какую проблему несет в себе стандартная реализация Action.
Релиз Pulse 2.0
Pulse – это система работы с логами для iOS и macOS приложений. Она записывает логи и сетевые запросы и позволяет удобно с ними работать. Состоит из встраиваемой в приложение библиотеки, экрана-консоли логов и сетевых запросов и приложений для анализа логов.
В версии 2.0 появилось много новых фичей:
- Отображение статуса pending сетевых запросов
- Улучшенное отображение метрик сетевых запросов, в том числе средней продолжительности и размеров запросов и ответов сервера
- Подробное отображение ошибок URLSession
- Улучшенное macOS приложение для анализа логов
Pulse – это система работы с логами для iOS и macOS приложений. Она записывает логи и сетевые запросы и позволяет удобно с ними работать. Состоит из встраиваемой в приложение библиотеки, экрана-консоли логов и сетевых запросов и приложений для анализа логов.
В версии 2.0 появилось много новых фичей:
- Отображение статуса pending сетевых запросов
- Улучшенное отображение метрик сетевых запросов, в том числе средней продолжительности и размеров запросов и ответов сервера
- Подробное отображение ошибок URLSession
- Улучшенное macOS приложение для анализа логов
DivKit — новый фреймворк для Server-Driven UI
- Позволяет управлять с сервера как отдельным элементом интерфейса, так и всем экраном
- Поддерживает server-driven ui второго поколения: описываются не параметры кастомизации крупных блоков, а вся верстка блока в целом
- Создан и применялся в приложениях Яндекса, сейчас опубликован командой на гитхабе.
- Позволяет управлять с сервера как отдельным элементом интерфейса, так и всем экраном
- Поддерживает server-driven ui второго поколения: описываются не параметры кастомизации крупных блоков, а вся верстка блока в целом
- Создан и применялся в приложениях Яндекса, сейчас опубликован командой на гитхабе.
Как отловить приложения, которые трекают ваши действия во встроенном браузере
На прошлой неделе Felix Krause выпустил исследование, в котором он проверил, какие скрипты инжектятся во встроенные браузеры разных социальных сетей. TikTok, например, трекает в нем все ваши действия, вплоть до вводимых данных, в том числе и паролей.
Он же запустил сайт InAppBrowser.com. При заходе на него вы увидите, каким образом браузер модифицировал код страницы.
На прошлой неделе Felix Krause выпустил исследование, в котором он проверил, какие скрипты инжектятся во встроенные браузеры разных социальных сетей. TikTok, например, трекает в нем все ваши действия, вплоть до вводимых данных, в том числе и паролей.
Он же запустил сайт InAppBrowser.com. При заходе на него вы увидите, каким образом браузер модифицировал код страницы.
Визуализация алгоритмов сортировки на Swift Charts
Автор видео реализует различные алгоритмы сортировки на Swift и визуализирует их на графиках из Swift Charts.
🫧Bubble Sort
☝️Selection Sort
📥 Insertion Sort
💨 Quick Sort
Автор видео реализует различные алгоритмы сортировки на Swift и визуализирует их на графиках из Swift Charts.
🫧Bubble Sort
☝️Selection Sort
📥 Insertion Sort
💨 Quick Sort
SwiftUI и Large Content Viewer
- В iOS доступны семь дефолтных размеров текста – от супер маленького до супер большого
- Некоторые системные компоненты физически не могут показывать текст слишком большого размера, и вместо этого по лонг тапу показывает увеличенную вьюшку. Эта функциональность называется Large Content Viewer
- В посте разбирается, как ее поддержать в своих кастомных компонентах и настроить Large Content Viewer для своего кейса
- В iOS доступны семь дефолтных размеров текста – от супер маленького до супер большого
- Некоторые системные компоненты физически не могут показывать текст слишком большого размера, и вместо этого по лонг тапу показывает увеличенную вьюшку. Эта функциональность называется Large Content Viewer
- В посте разбирается, как ее поддержать в своих кастомных компонентах и настроить Large Content Viewer для своего кейса
Осенняя презентация новых девайсов Apple
Apple анонсировали традиционный осенний ивент, на котором обычно показывают новые часы и айфоны. Подключайтесь к трансляции 7 сентября в 20 часов по Москве.
Apple анонсировали традиционный осенний ивент, на котором обычно показывают новые часы и айфоны. Подключайтесь к трансляции 7 сентября в 20 часов по Москве.
X (formerly Twitter)
Apple (@Apple) on X
Go for launch. Tune in for a special #AppleEvent on September 7 at 10 a.m. PT.
Tap the ❤️ and we’ll send you a reminder on event day.
Tap the ❤️ and we’ll send you a reminder on event day.
Круглый стол: Жизнь со SwiftUI
Через полчаса пройдет открытая сессия Podlodka Crew про то, как сейчас живется со SwiftUI в проде. Основной акцент будет на практических примерах из жизни гибрида SwiftUI и UIKit, связи этих двух фреймворков и выборе архитектуры.
Через полчаса пройдет открытая сессия Podlodka Crew про то, как сейчас живется со SwiftUI в проде. Основной акцент будет на практических примерах из жизни гибрида SwiftUI и UIKit, связи этих двух фреймворков и выборе архитектуры.
YouTube
Круглый стол “Жизнь со SwiftUI”
На круглом столе с экспертами из Agora, SberDevices, Osome и Dodo Brands обсудим практические вопросы того как и с чего они начали переход на SwiftUI, на каком сейчас этапе, какие сложности возникают.
Основной акцент будем делать на практические примеры…
Основной акцент будем делать на практические примеры…
Советы по работе с WidgetKit
- Виджеты получают от приложений «таймлайны» – массивы моделек для отображения. Даже если вам не нужно отображать всю последовательность сразу, это полезная техника для обновления стейта вовремя
- Если вы предоставляете данные для отображения на несколько часов вперед, не забывайте обновить их вручную, если они перестанут быть актуальными
- Если виджет работает с данными, которые недоступны в залоченном состоянии телефона, настройте правильный кеш. Пример можно посмотреть здесь
- Виджеты получают от приложений «таймлайны» – массивы моделек для отображения. Даже если вам не нужно отображать всю последовательность сразу, это полезная техника для обновления стейта вовремя
- Если вы предоставляете данные для отображения на несколько часов вперед, не забывайте обновить их вручную, если они перестанут быть актуальными
- Если виджет работает с данными, которые недоступны в залоченном состоянии телефона, настройте правильный кеш. Пример можно посмотреть здесь
Настройка кастомных Launch Screen для разных диплинков
Начиная с Xcode 12, можно конфигурировать отдельные launch screens для каждого из диплинков, которые обрабатывает приложение.
Начиная с Xcode 12, можно конфигурировать отдельные launch screens для каждого из диплинков, которые обрабатывает приложение.
Разбор алгоритма diff’инга в SwiftUI
Очень детальный разбор всех нюансов работы алгоритма, который определяет, когда и как нужно изменить лейаут.
Очень детальный разбор всех нюансов работы алгоритма, который определяет, когда и как нужно изменить лейаут.
SwiftTUI – аналог SwiftUI для консольных интерфейсов
Автор предыдущей статьи не просто так разбирался с устройством SwiftUI. Он написал собственную реализацию его движка для того, чтобы легко строить поверх него текстовые интерйесы для консоли.
Автор предыдущей статьи не просто так разбирался с устройством SwiftUI. Он написал собственную реализацию его движка для того, чтобы легко строить поверх него текстовые интерйесы для консоли.
Решение проблемы повышенного потребления батареи у Xcode 14 beta
- Иногда при запуске симулятора iOS 16 в Xcode 14 beta резко вырастает нагрузка на CPU и потребление батареи
- В статье разбирается воркэраунд, который помогает временно решить проблему
- Иногда при запуске симулятора iOS 16 в Xcode 14 beta резко вырастает нагрузка на CPU и потребление батареи
- В статье разбирается воркэраунд, который помогает временно решить проблему
Nihongo Blog
Stop Xcode 14 beta from draining your battery
There's a bug in Xcode 14 betas 4-6 that causes your CPU to go crazy and drain your battery. Here's a workaround.