На сегодня это всё?
Дальше ждёт около сотни технических сессий.
🫡 Самые важные будут как всегда в нашем канале.
Если вам понравилась трансляция, фичи и то, что выкатили эппл сегодня, то вы всегда можете:
🚀 Дать буст каналу
😃 iOS Dev — самые важные новости для вас👍
Кто замьютил канал, уже можно вернуть колокольчик)
Дальше ждёт около сотни технических сессий.
🫡 Самые важные будут как всегда в нашем канале.
Если вам понравилась трансляция, фичи и то, что выкатили эппл сегодня, то вы всегда можете:
Please open Telegram to view this post
VIEW IN TELEGRAM
Предиктивное завершение кода (автокомплит на максималках).
Добавили инсайты о производительности с помощью улучшенной диагностики, новый вид графиков в Instruments.
И многое другое!
📖 Как оказалось, это ещё далеко не всё🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥17 7🎄3🎉2⚡1☃1❤🔥1💯1🏆1🆒1
1. Вышло в релиз приложение iOS IQ - можно потренироваться и проверить себя в самых разных темах. Есть индивидуальная статистика, прогресс, ранги (и даже немного metal для анимаций), а также таблицы лидеров.
2. Теперь комментарии будут открыты для всех (правила модерации обычные).
В закрытом чате останутся внутренние обсуждения, например, вчера я делился новостями с Platform State of the Union в реальном времени, основные моменты будут и здесь немного позже.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43 11💯8👍4🏆3❤🔥2✍1🤩1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Swift Assist — топовая фича нового Xcode
👨💻 Во вчерашнем Platform State of the Union показали пример,
Как минимум, должно быть супер-полезно при прототипировании приложений.
😃 iOS Dev
как это должно быть в действии
.Как минимум, должно быть супер-полезно при прототипировании приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62 13💯7☃2🎄2😎2 2👍1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
MeshGradient в iOS 18
Теперь доступен градиент, который можно задавать с помощью 2D-сетки расставленных цветов.
🚀 Попробовал сделать несложную анимацию, чувствуется потенциал (код доступен прямо на гифке).
📺 Можно посмотреть ещё и на такой вариант анимации.
🕖 Вариант реализации через таймлайн (и код).
😃 iOS Dev
Теперь доступен градиент, который можно задавать с помощью 2D-сетки расставленных цветов.
📺 Можно посмотреть ещё и на такой вариант анимации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Анимации SwiftUI доступны в UIKit с iOS 18
Сейчас SwiftUI, UIKit и AppKit используют различные базовые реализации для анимации.
📖 Apple рекомендует использовать новую возможность с iOS 18 во всех фреймворках, чтобы создать более ожидаемый опыт для пользователей (и избежать потенциальных сложностей для разработчиков с синхронизацией таймингов и другими проблемами).
👨💻 На скриншоте пример создания использования такой анимации.
😃 iOS Dev
Сейчас SwiftUI, UIKit и AppKit используют различные базовые реализации для анимации.
📖 Apple рекомендует использовать новую возможность с iOS 18 во всех фреймворках, чтобы создать более ожидаемый опыт для пользователей (и избежать потенциальных сложностей для разработчиков с синхронизацией таймингов и другими проблемами).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
История создания приложения iOS IQ (эффекты, код и примеры)
❤️ Спасибо всем, кто установил приложение и оставил отзыв, это очень ценно.
По запрошенным комментариям в чате решился опубликовать большую статью про разработку приложения.
Рассмотрел основные моменты по анимации, реализации шейдеров, статистике и тому, как быстро сделать авторизацию.
📖 Статья уже сейчас доступна всем.
А если вам интересно, как именно можно реализовать эффект гиперпространства или анимацию подсветки:
✅ Доступ со скидкой на время WWDC можно получить здесь (или тут ещё выгоднее).
😃 iOS Dev - кстати, версия с обновлёнными рангами уже доступна
Пользователей, который набрал в харкдоре больше 20 - это очень мощно! Но в следующих обновлениях будет ещё сложнее.
❤️ Спасибо всем, кто установил приложение и оставил отзыв, это очень ценно.
По запрошенным комментариям в чате решился опубликовать большую статью про разработку приложения.
Рассмотрел основные моменты по анимации, реализации шейдеров, статистике и тому, как быстро сделать авторизацию.
📖 Статья уже сейчас доступна всем.
А если вам интересно, как именно можно реализовать эффект гиперпространства или анимацию подсветки:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥7 7💯2☃1⚡1👏1🏆1🎄1
Xcode 16 упростит поиск проблем, приводящим к зависаниям приложений
🛠 Теперь с помощью нового инструмента flame graph можно будет определить, выполнение какого именно кода занимает большую часть времени при тяжелых подвисаниях в приложении (особенно полезно на старте).
🤩 Интервалы уже взвешены по параметру процента времени, которые они занимают.
Бонус: в Organizer добавили новую категорию Launches, в которой можно будет увидеть, что именно является причиной долгого запуска приложения у пользователей (статистика за всё время).
😃 iOS Dev
🛠 Теперь с помощью нового инструмента flame graph можно будет определить, выполнение какого именно кода занимает большую часть времени при тяжелых подвисаниях в приложении (особенно полезно на старте).
Бонус: в Organizer добавили новую категорию Launches, в которой можно будет увидеть, что именно является причиной долгого запуска приложения у пользователей (статистика за всё время).
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый метод count(where:) в Swift 6
➡️ В SE-0220 появился новый метод count(where:), который выполняет filter() и count за один проход.
Это позволяет избежать создания нового массива и обеспечивает четкое и прозрачное решение подсчёта.
🤩 Этот метод доступен для всех типов, соответствующих Sequence, поэтому его можно использовать и для сетов, и для словарей.
😃 iOS Dev
Это позволяет избежать создания нового массива и обеспечивает четкое и прозрачное решение подсчёта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥16 12✍2🎉2❤🔥1⚡1👏1🏆1🎄1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Подборка анимаций c WWDC c примерами кода
Прекрасная сессия, в которой Robb и Philip поделились примерами кода и новыми подходами к реализации.
📺 Новая анимация при скролле.
📺 Работа с цветом.
📺 View и эффекты.
📺 Работа с текстом и новые анимации (уже добавил себе в закладких).
📺 Metal shaders (а куда же без них).
После завершения WWDC уверен, что ещё вернёмся и рассмотрим многое детально.
😃 iOS Dev
Прекрасная сессия, в которой Robb и Philip поделились примерами кода и новыми подходами к реализации.
📺 Новая анимация при скролле.
📺 Работа с цветом.
📺 View и эффекты.
📺 Работа с текстом и новые анимации (уже добавил себе в закладких).
📺 Metal shaders (а куда же без них).
После завершения WWDC уверен, что ещё вернёмся и рассмотрим многое детально.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50👍11 5💯2🎄2⚡1☃1👏1
🥳 Нужен будет только один набор скриншотов при загрузке приложения в App Store (как для iPhone, так и для iPad).
📖 Отличная новость для дизайнеров, инди-разработчиков, да и для компаний тоже.
А ещё доступ к запросу фичеринга будет более явным (конечно же, без гарантий успеха).
🛩 Новый App Store Connect обещают выкатить осенью.
😃 iOS Dev
📖 Отличная новость для дизайнеров, инди-разработчиков, да и для компаний тоже.
А ещё доступ к запросу фичеринга будет более явным (конечно же, без гарантий успеха).
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉24🔥8 6👍3🤯3❤🔥2💯1🆒1
Подборка лучших сессий с WWDC24 (Swift, Perfomance, Debugging)
Неделя WWDC подошла к концу, поэтому решил вынести сессии, которые можно будет посмотреть в приоритетном порядке.
📼 Анализ heap memory
📼 Использование некопируемых типов в Swift
📼 Swift Perfomance
📼 Подборка анимаций c WWDC c примерами кода
📼 Показатели производительности в AVFoundation
📼 Run, Break, Inspect: Исследуйте эффективную отладку в LLDB
📼 Swift Testing
📼 База в Xcode
📼 Миграция на Swift 6
📼 Что нового в UIKit
Конечно, лучше смотреть их в своём темпе, у меня даже с некоторых прошлых WWDC что-то осталось на исследование.
А если вам понравилось WWDC (трансляция, анонсы и разборы), то вы можете:
❤️🔥Поставить лайк •🚀 Дать буст • ✅ Подписаться (по специальному предложению).
😃 iOS Dev — это была по-настоящему насыщенная неделя (передаю большое спасибо и тем, кто уже установил приложение и написал отзыв )
Неделя WWDC подошла к концу, поэтому решил вынести сессии, которые можно будет посмотреть в приоритетном порядке.
📼 Анализ heap memory
Рассказывают не только об основе динамической памяти (куче), но и о том, как использовать Instruments и Xcode для анализа и устранения распространенных проблем. А ещё методы и лучшие практики для диагностики утечек в приложении.✅ Рекомендую также почитать большой блок на бусти, посвященный этим проблемам.
📼 Использование некопируемых типов в Swift
Большая сессия, которая позволит узнать, что вообще подрузамевает копирование в Swift, когда можно использовать некопируемый тип и как value ownership позволяет четко обозначить свои намерения.
📼 Swift Perfomance
Сессия поясняет то, как именно Swift обеспечивает баланс производительности. Приводят примеры разных функций Swift и способы их реализации, чтобы лучше понять возможные потенциальные проблемы, влияющие на перфоманс.
Можно глубже погрузиться в основы выделения памяти, memory layout в целом, дженерики, замыкания, в общем - топ и в закладки.
📼 Подборка анимаций c WWDC c примерами кода
Новые анимации скролла, эффекты, все с примерами.
📼 Показатели производительности в AVFoundation
Все, кто работал с видео, компрессией или даже просто использовал AVPlayer, знают, как мало документации и примеров по этому разделу. В этой сессии рассказывают, какие метрики стоит учитывать, и как они влияют на перфоманс.
📼 Run, Break, Inspect: Исследуйте эффективную отладку в LLDB
Показывают, как максимально эффективно использовать крашлоги и бэктрейсы, а также как прокачать брейкпоинты с помощью действий и сложных условий. А ещё особое внимание уделено команде «p» и новым возможностям Swift, которые улучшат опыт отладки.
📼 Swift Testing
Можно узнать, как написать набор тестов, используя встроенные функции. Как расширять существующие тесты, чтобы охватить больше сценариев, организовать тесты в различных окружениях и оптимизировать тесты для параллельного выполнения.
📼 База в Xcode
Рассказывают о популярных фишках Xcode, которые помогут ускорить разработку.
📼 Миграция на Swift 6
Можно узнать, как перевести существующее приложение на Swift 6 на реальном примере. Рассказывают об опции переноса модуль за модулем, и как компилятор помогает выявить код, подверженный риску гонок данных. Рассказывают про изоляцию и то, как решить проблему одновременного доступа к общему изменяемому состоянию.✅ Большая статья и разбор изоляции есть на бусти.
📼 Что нового в UIKit
Узнайте обо всем новом в UIKit, в том числе об удобстве запуска вкладок и документов, переходах, изменениях текста и ввода. Также рассказывают про совместимость анимаций и жестов UIKit и SwiftUI, а также общие улучшения во всем UIKit.
Конечно, лучше смотреть их в своём темпе, у меня даже с некоторых прошлых WWDC что-то осталось на исследование.
А если вам понравилось WWDC (трансляция, анонсы и разборы), то вы можете:
❤️🔥Поставить лайк •
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥45 11🔥8👍6🎉2✍1🤩1👌1💯1🏆1
Память: ARC, side table, флаги, утечки и многое другое
🧠 Одна из основных тем в разработке — управление памятью. Наверняка каждый сталкивался в своей работе с проблемами, связанными с утечками и искал, как их решить.
В своём канале я регулярно делюсь советами и исследованиями на эту тему, более того, в приложении есть целая пачка вопросов на эту тему.
🧠 Уже сегодня в iOS IQ добавлена новая большая секция, которая отвечает на многие из этих вопросов.
Поэтому, если вы хотели бы расширить арсенал своих знаний и узнать больше об ARC, side table или тому, что приводит к утечкам памяти, уже сейчас доступно несколько десятков вопросов с разными уровнями сложности:
✅ Подпишитесь на сайте или в телеграме (на год - выгоднее).
😃 iOS Dev
🧠 Одна из основных тем в разработке — управление памятью. Наверняка каждый сталкивался в своей работе с проблемами, связанными с утечками и искал, как их решить.
В своём канале я регулярно делюсь советами и исследованиями на эту тему, более того, в приложении есть целая пачка вопросов на эту тему.
Поэтому, если вы хотели бы расширить арсенал своих знаний и узнать больше об ARC, side table или тому, что приводит к утечкам памяти, уже сейчас доступно несколько десятков вопросов с разными уровнями сложности:
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание анимации в стиле Siri в iOS 18
Siddhant Mehta и Meng To использовали комбинацию из Mesh Gradient (пример вы можете увидеть в моём посте выше) и ripple-эффекта.
🛠 Исходный код проекта доступен на github.
📺 Сессия с примерами анимаций вот тут.
😃 iOS Dev
Siddhant Mehta и Meng To использовали комбинацию из Mesh Gradient (пример вы можете увидеть в моём посте выше) и ripple-эффекта.
🛠 Исходный код проекта доступен на github.
📺 Сессия с примерами анимаций вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥19 13☃1👏1💯1🏆1🎄1 1
UIKit: подборка теоретических материалов и вопросы
Конечно, SwiftUI набирает обороты и после добавления последних фич (в том числе и по навигации) с ним станет приятнее работать.
Но несмотря на это, подавляющее большинство проектов используют UIKIt, а вопросы на собеседованиях до сих пор строятся вокруг него.
У меня собралось большое количество материалов и вопросов за время разработки и проведенных интервью, поэтому я решил добавить новую секцию и в iOS IQ.
В ней вы увидите не только классические вопросы по типу отличий frame от bounds или особенности Responder Chain, но и ряд нестандартных вещей, которые так или иначе используются в нашей работе.
Постарался подкрепить и примерами с кодом, и привел примеры реализации.
✅ Подписаться можно здесь и вот тут.
✅ Секретная ссылка со скидкой здесь: ссылка .
😃 iOS Dev
Конечно, SwiftUI набирает обороты и после добавления последних фич (в том числе и по навигации) с ним станет приятнее работать.
Но несмотря на это, подавляющее большинство проектов используют UIKIt, а вопросы на собеседованиях до сих пор строятся вокруг него.
У меня собралось большое количество материалов и вопросов за время разработки и проведенных интервью, поэтому я решил добавить новую секцию и в iOS IQ.
В ней вы увидите не только классические вопросы по типу отличий frame от bounds или особенности Responder Chain, но и ряд нестандартных вещей, которые так или иначе используются в нашей работе.
Постарался подкрепить и примерами с кодом, и привел примеры реализации.
🧠 Что вы получите, подписавшись сегодня:➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки✅ А также доступ в закрытый чат, ранние релизы приложения iOS IQ, тонну теории и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16 9🔥6⚡2💯2🤝2☃1🏆1🎅1🎄1
NotPrivateAPIs — проект, который раскрывает некоторые приватные API
❗️ Конечно, их нельзя использовать в рабочих проектах и выкладывать в App Store.
Например, меню со своими элементами это вообще та ещё задача (посмотрите реакции в Messages над сообщением, или реализацию в телеграме).
📖 Morris Richman собрал в одном месте вещи, которые юзает Apple: например, как добавить кастомный хэдер в UIAlertController или как поменять иконку приложения без предупреждения пользователя.
😃 iOS Dev
Например, меню со своими элементами это вообще та ещё задача (посмотрите реакции в Messages над сообщением, или реализацию в телеграме).
📖 Morris Richman собрал в одном месте вещи, которые юзает Apple: например, как добавить кастомный хэдер в UIAlertController или как поменять иконку приложения без предупреждения пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как iOS 18 улучшает работу с градиентами
Очень часто в проектах разработчики используют дополнительный градиент, чтобы создать контраст между фоном и текстом.
*Или используют заранее заготовленный ассет в каталоге ресурсов.
Однако при таком использовании линейного градиента будут видны перепады яркости и резкий переход.
📖 В iOS 18 доступно новое API для смешивания цветов. Поэтому, используя
Пример использования под катом (разверните, чтобы посмотреть):
📖 Почитать дополнительно про смешивание цветов можно в этой статье.
😃 iOS Dev • больше разборов тут
Очень часто в проектах разработчики используют дополнительный градиент, чтобы создать контраст между фоном и текстом.
Однако при таком использовании линейного градиента будут видны перепады яркости и резкий переход.
📖 В iOS 18 доступно новое API для смешивания цветов. Поэтому, используя
UnitCurve
, можно интерполировать цвета с помощью встроенных или кастомных кривых Безье, чтобы обеспечить плавность перехода.Пример использования под катом (разверните, чтобы посмотреть):
extension Gradient {
init(from: Color, to:Color, with curve:UnitCurve, steps:Int = 10) {
let colors = stride(from: 0.0, through: 1.0, by: 1.0 / Double(steps))
.map { f in
from.mix(with: to, by: curve.value(at: f))
}
self.init(colors: colors)
}
}
📖 Почитать дополнительно про смешивание цветов можно в этой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Realm vs SwiftData: что быстрее?
Jacob Bartlett из компании Emerge Tools провел большое исследование и сравнил производительность по трём ключевым метрикам:
1️⃣ Скорость.
2️⃣ Размер.
3️⃣ Память.
И хотя с точки зрения записи и выполнения простых запросов на чтение Realm впереди, но в некоторых моментах благодаря превосходному управлению графами объектов при работе с более сложными данными SwiftData оказалась производительнее.
При небольших объемах (≤10 000 элементов, что охватывает подавляющее большинство сценариев в мобильных приложениях) SwiftData также была намного быстрее при обновлении существующих данных.
📖 Много графиков, выводов и интересных особенностей можно узнать в этой статье.
📖 А на хабре вы возможно видели, что Realm не так хорош в этой статье от Dodo Engineering.
C моей точки зрения, всё, конечно зависит от задач. И для небольших проектов в целом можно использовать что угодно, а вот при разработке внутри компании все равно придётся все тщательно взвесить и, возможно, попробовать несколько подходов, или собрать себе собственный SQLite (привет, ВК).
😃 iOS Dev
Jacob Bartlett из компании Emerge Tools провел большое исследование и сравнил производительность по трём ключевым метрикам:
1️⃣ Скорость.
2️⃣ Размер.
3️⃣ Память.
И хотя с точки зрения записи и выполнения простых запросов на чтение Realm впереди, но в некоторых моментах благодаря превосходному управлению графами объектов при работе с более сложными данными SwiftData оказалась производительнее.
При небольших объемах (≤10 000 элементов, что охватывает подавляющее большинство сценариев в мобильных приложениях) SwiftData также была намного быстрее при обновлении существующих данных.
📖 Много графиков, выводов и интересных особенностей можно узнать в этой статье.
📖 А на хабре вы возможно видели, что Realm не так хорош в этой статье от Dodo Engineering.
C моей точки зрения, всё, конечно зависит от задач. И для небольших проектов в целом можно использовать что угодно, а вот при разработке внутри компании все равно придётся все тщательно взвесить и, возможно, попробовать несколько подходов, или собрать себе собственный SQLite (привет, ВК).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание эффекта перехода App Store с использованием NavigationTransition в iOS 18
Этот эффект можно увидеть, например, в разделе «Сегодня» или на📺 .
И если создание похожего перехода в iOS 18 может занять пару строк кода, то повторение анимации с учетом всех эффектов — куда более сложная задача.
📖 В этой статье Peter Friese поэтапно рассказывает, какие моменты стоит учитывать и показывает все итерации на примерах кода.
✅ Подпишитесь, чтобы увидеть больше таких разборов и получить доступ ко всей базе знаний.
😃 iOS Dev
Этот эффект можно увидеть, например, в разделе «Сегодня» или на
И если создание похожего перехода в iOS 18 может занять пару строк кода, то повторение анимации с учетом всех эффектов — куда более сложная задача.
📖 В этой статье Peter Friese поэтапно рассказывает, какие моменты стоит учитывать и показывает все итерации на примерах кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍9 9⚡1☃1💯1🏆1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Создание динамических текстовых эффектов с помощью TextRenderer
👨💻 Используя метод draw протокола
Новые функции в iOS 18 дают нам доступ ко многим ранее недоступным деталям, таким как определение того, обрезан ли текст через свойство Layout's
📖 В этом материале рассмотрены не только плюсы, но и ограничения и сложности работы с анимацией в целом. А код можно посмотреть вот тут.
📖 Кстати, если хотите почитать про хардкорные вещи в TextView: работу с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим — на канале есть отличный пост.
😃 iOS Dev
TextRenderer
, мы должны выполнить рендеринг на основе информации об элементах, предоставленной Text.Layout
в рамках GraphicsContext
.Новые функции в iOS 18 дают нам доступ ко многим ранее недоступным деталям, таким как определение того, обрезан ли текст через свойство Layout's
isTruncated
, количество строк, отображаемых после рендеринга, и конкретные данные о расположении текста.📖 В этом материале рассмотрены не только плюсы, но и ограничения и сложности работы с анимацией в целом. А код можно посмотреть вот тут.
📖 Кстати, если хотите почитать про хардкорные вещи в TextView: работу с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим — на канале есть отличный пост.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥7 7💯2☃1👏1🤩1🎅1🎄1🆒1
Алгоритм Чайкина в Swift: назначение и реализация
Уже прошло приличное количество времени с того самого контеста в телеге, но я всё ещё нахожу интересные решения для сложных вещей и с радостью делюсь с вами. Помните анимацию в Wallet?
Прежде, чем посмотреть то, как реализовать этот алгоритм в Swift, посмотрите прекрасную статью про то, как воспроизвести рукописный шрифт.
🐱 Применений у этого алгоритма множество: графический дизайн, анимации, шрифты и многое другое.
📖 Здесь вы можете посмотреть пример реализации на Swift.
😃 iOS Dev
Уже прошло приличное количество времени с того самого контеста в телеге, но я всё ещё нахожу интересные решения для сложных вещей и с радостью делюсь с вами. Помните анимацию в Wallet?
Алгоритм Чайкина - это простой метод сглаживания грубой линии в красивую плавную кривую. Он работает путем многократного добавления новых точек вдоль каждого сегмента линии на расстоянии 25 и 75 % пути между исходными точками, а затем соединяет эти новые точки. С каждым разом линия становится все более и более гладкой.
Прежде, чем посмотреть то, как реализовать этот алгоритм в Swift, посмотрите прекрасную статью про то, как воспроизвести рукописный шрифт.
📖 Здесь вы можете посмотреть пример реализации на Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM