Что нового для SwiftUI в iOS 18
Каждый год Apple дорабатывает SwiftUI, в этом году не только появилось много нового, но и изменились нюансы. Главное изменение в том, что
🟢 Эффекты и анимации при работе с текстом
🟢 Анимации переходов
🟢 API для получения цвета путем смешения
🟢 Градиента типа Mesh
🟢 Модификатор onGeometryChange для подписки на изменение размера
🟢 Модификатор onScrollGeometryChange для работы со скроллом
🟢 TabView, аналог UITabBarController
🟢 Асинхронный метод compile для работы с шейдерами
Каждый год Apple дорабатывает SwiftUI, в этом году не только появилось много нового, но и изменились нюансы. Главное изменение в том, что
View
теперь аттрибуцирован @MainActor
, это значит, что свойство body вместе со всеми другими свойствами и методами, которые мы создаем, запускаются в главном акторе. Раньше это относилось только к содержимому body
. Ну и множество нововведений:Please open Telegram to view this post
VIEW IN TELEGRAM
KMM отладка пришла в Xcode!
Давно я не трогал Kotlin Multiplatform и чем больше я его не пробую, тем лучше он становится, продолжу, пожалуй, не трогать дальше (шутка). Что меня поразило, это обновление xcode-kotlin, плагина LLDB. Удивительно, но он обеспечивает полную поддержку визуальной отладки Kotlin Multiplatform в Xcode, включая поддержку смешивания языков в одном сеансе дебага. Если у вас есть опыт с KMP проектом, расскажите, как оно сейчас, все еще нужно одновременно держать Xcode и Android Studio?
Ключевые изменения:
🟢 Производительность отладки до 5 раз быстрее
🟢 Расширена информация по каждой переменной
🟢 Работает в коде Swift, Kotlin и Objective-C
*xcode-kotlin опенсорсный и доступен через Homebrew
Давно я не трогал Kotlin Multiplatform и чем больше я его не пробую, тем лучше он становится, продолжу, пожалуй, не трогать дальше (шутка). Что меня поразило, это обновление xcode-kotlin, плагина LLDB. Удивительно, но он обеспечивает полную поддержку визуальной отладки Kotlin Multiplatform в Xcode, включая поддержку смешивания языков в одном сеансе дебага. Если у вас есть опыт с KMP проектом, расскажите, как оно сейчас, все еще нужно одновременно держать Xcode и Android Studio?
Ключевые изменения:
*xcode-kotlin опенсорсный и доступен через Homebrew
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3
Опубликовали мой доклад с прошедшего мобиуса. Если вы не знаете что такое CRDT но в вашем приложении есть какое-либо хранилище, настоятельно советую к просмотру ☺️
Forwarded from Mobius — канал конференции
#видеозаписи
Слова «Вам не нужно хранилище в приложении» звучат провокационно, но iOS-доклад Андрея Зонова — не просто «наброс», а вполне серьезное рассуждение. Что тогда скрывается за этими словами? В этот #МобильныйВторник открываем видеозапись, так что можете увидеть сами.
Слова «Вам не нужно хранилище в приложении» звучат провокационно, но iOS-доклад Андрея Зонова — не просто «наброс», а вполне серьезное рассуждение. Что тогда скрывается за этими словами? В этот #МобильныйВторник открываем видеозапись, так что можете увидеть сами.
👍11🤔1
Еще один полезный опенсорсный фреймворк от ребят из PointFree. Issue Reporting - это удобная обертка для работы с ошибками в рантайме. Как обычно, фокус на читабельность и тестируемость.
reportIssue
- функция, позволяющая отметить блоки кода, в которые программа не должна была попасть. Ее можно настроить:Что важно, за счет интеграции с
XCTest
и новым Swift Testing
, тесты, в рамках которых программа будет попадать в блоки с reportIssue
будут падать. Если у вас в продукте есть уже подход к репортингу ассертов, можно создать кастомную конфигурацию, например отправку события на сервер или формирование письма с трейсомPlease open Telegram to view this post
VIEW IN TELEGRAM
👍2
Режимы наложения слоев в SwiftUI
Не все знакомы с режимами наложения в SwiftUI, а ведь их можно применять не только к изображениям, но и к тексту или даже к контейнеру, содержащему несколько элементов. Режимы наложения, как следует из названия, позволяют смешивать цвета нескольких слоев пикселей, используя математические формулы для определения влияния каждого пикселя на конечное изображение. Вы можете комбинировать любое количество слоев, но, как минимум, вам понадобятся 2 слоя - базовый слой и слой наложения. В статье подробно рассмотривается логика наложения слоев, почему она важна, и как она реализована с точки зрения математики. Простая статья - гайд, которую можно показать дизайнеру или использовать самому при реализаци интерфейса
Не все знакомы с режимами наложения в SwiftUI, а ведь их можно применять не только к изображениям, но и к тексту или даже к контейнеру, содержащему несколько элементов. Режимы наложения, как следует из названия, позволяют смешивать цвета нескольких слоев пикселей, используя математические формулы для определения влияния каждого пикселя на конечное изображение. Вы можете комбинировать любое количество слоев, но, как минимум, вам понадобятся 2 слоя - базовый слой и слой наложения. В статье подробно рассмотривается логика наложения слоев, почему она важна, и как она реализована с точки зрения математики. Простая статья - гайд, которую можно показать дизайнеру или использовать самому при реализаци интерфейса
Иногда встречается необходимость внутри структуры создать свойство с типом самой структуры. Из-за того что структуры в Swift это ValueType, это невозможно, без обертки в виде коллекции. Если вы не хотите прибегать к таким хакам или переходить на классы - можно написать достаточно простую обертку самому. Вроде, очевидно, но раз про это пишут статью, это кому-то полезно
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Одним из незамеченных улучшений Xcode 16 стала работа в режиме отладки. Благодаря новому макросу DebugDescription, пришедшему на замену протоколу CustomDebugStringConvertible, вывод значений в режиме отладки и печать в консоль стала значительно лучше. В статье не только показывается пример внедрения аннотаций, но и то как это работает под капотом, при чем здесь LLDB Type Summary и какие есть альтернативы, если ваш проект не планирует миграцию на Xcode 16 на релизе
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Вот это новость! В блоге swift объявили о релизе опенсорсной реализации гомоморфного шифрования
Работа гомоморфного шифрования выглядит следующим образом:
Шифрование основано на задаче кольцевого обучения с ошибками (RLWE), которая обладает квантовой устойчивостью!
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6
Как создать крутые визуальные эффекты в приложении с минимальными усилиями? Metal
Хочу посоветовать вам доклад, который, наконец, доступен на ютуб, в день когда его заблокировали в РФ
Еще год назад в SwiftUI 5 случилось обновление, которое упростило использование Metal-шейдеров — того самого инструмента для графических фич. Это крутое нововведение, на мой взгляд, осталось незамеченным. В докладе разбираются возможности Metal и приводятся примеры применения Metal в повседневных задачах.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Почему Metal перестал быть страшным — Игорь Белов, Т-Банк
Доклад посвящен нововведению в SwiftUI 5, которое упрощает использование Metal-шейдеров и позволяет создавать мощные визуальные эффекты для приложений с минимальными усилиями. Несмотря на свою значимость, нововведение получило ограниченное внимание на WWDC…
🔥7❤1
Swift Algorithms - это Swift Package с полезными алгоритмами для работы с коллекциями, позволяя вам находить комбинации и перестановки, создавать случайную выборку и многое другое. Несмотря на то что это официальный пакет Apple для работы со Swift коллекциями про него мало кто знает и почти никто не использует. В статье, Винсент, предпринял попытку показать удобство использования данного пакета на примере 5 простых алгоритмов:
chunks(ofCount:)
- метод позволяет сделать разбивку на страницы. Вы можете использовать его для разделения коллекции на фрагменты заданного размера или на основе предиката.randomSample()
- функция позволяет вам взять случайную выборку из последовательности. Если вам когда-либо приходилось внедрять случайную выборку самостоятельно, вы знаете, как легко ошибочно внести смещение в выборку. Поэтому возможность полагаться на официальную реализацию весьма приветствуется!indexed()
- работает очень похоже на функцию enumerated(), за исключением того, что, в то время как функция enumerated() возвращает увеличивающееся количество элементов, функция indexed() возвращает фактические индексы элементов. Это означает, что вы, в свою очередь, можете безопасно использовать эти индексы для индексации исходной коллекции без риска вызвать сбой во время выполнения.min(count:), max(count:)
- очень полезны, если вам когда-либо понадобится извлечь только N наименьших или наибольших элементов из большой последовательности.compacted, firstNonNil, uniqued
- решают очень простую и распространенную проблему работы с коллекциями, но оттестированы и оптимизированыОт себя хочу добавить, очень странно что Apple решили не добавлять Algorithms в свой стандартный набор фреймворков, поставляемых с системой. Как мне кажется, это бы сильно забустило использование этих алгоритмов и улучшило общую стабильность платформы. Может быть в iOS 19 Algorithms станут частью системы, а SwiftUI отдельным пакетом
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥2🤔1