iOS Broadcast
3.31K subscribers
1.69K photos
84 videos
971 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Документация Apple по Dynamic Island

Как добавить Live Activities в приложение:
👉 Создаем widget extension для приложения (WidgetKitCreating a Widget Extension)
👉 Добавляем Supports Live Activities: YES в Info.plist
👉 Добавляем структуру ActivityAttributes чтобы описать статический и динамический контент Live Activity
👉 Создаем ActivityConfiguration на основе ActivityAttributes
👉 Конфигурируем начало, обновление и конец Live Activity

Доступно с Xcode 14.1

#iOS16
🔥15👎1
AttributedString, a better way to handle attributed strings in iOS 15 (2 мин)

С iOS 15 на замену NSAttributedString приходит AttributedString. В скринах пример кода для цветной строки с подчеркиванием, выделение range и markdown

#swift
👏5👎1
Data flow in SwiftUI (4 мин)

На схеме случаи использования Binding, ObservableObject, StateObject, ObservedObject, EnvironmentObject

#swiftUI
👍5👎1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI Advanced Animation: Morphing Shapes (4 мин)

Если две стадии анимации представлены объектами, соответствующими протоколу VectorArithmetic, SwiftUI может высчитать промежуточные состояния и отрисовать переход.

Концептуально создание пузырька из лавовой лампы выглядит так:
👉 Создаем AnimatableVector: VectorArithmetic. Библиотека Accelerate используется для быстрых вычислений
👉 Делим круг на несколько дуг, радиус каждой из которых будет меняться независимо от других (пример в гифке)

#swiftUI
🔥6👎1
How to Show/hide whitespace characters in Xcode

Если вы работаете с CSV, YAML или ваш Linter ругается на пробелы, на скрине небольшой лайфхак, как их отобразить в Xcode

#xcode
🔥6👎1
What’s New in SwiftUI 4 for iOS 16 (12 мин)

Что нового в SwiftUI iOS 16?
🔥 SwiftUI Charts - компонент для графиков
🔥 Resizable Bottom Sheet - нижняя шторка
🔥 MultiDatePicker - выбор дат
🔥 NavigationStack и NavigationSplitView для улучшенной навигации
🔥 ShareLink - "поделиться"
🔥 Table for iPadOS - таблицы на iPad
🔥 Expandable Text Field - поле для ввода текста
🔥 Gauge - отображение прогресса
🔥 ViewThatFits - автоматическое вычисление размера для верстки
🔥 Gradient and Shadow - градиенты и тени
🔥 Grid API - верстка для сетки
🔥 AnyLayout and Layout Protocol - кастомные лейауты

#swiftUI
🔥4👎1
Exploring Rendering in SwiftUI (4 мин)

SwiftUI перерисовывает компоненты, когда меняются их свойства, а не state.
View является структурой: иммутабельным value типом. Благодаря этому легче отследить изменения.
Если изменяются свойства View, мы должны пересоздать его, что и происходит в body. Таким образом, мы словно говорим рантайму: "Мы создали новую view. Нарисуешь его?” 😄

#swiftUI
👍6👎1
How 5 iOS apps could improve their startup time by an average of 28%

Проанализировали время загрузки популярных приложений с помощью Emerge Performance Analysis на iPhone SE iOS 15.4.1 и вот что получилось:

United Airlines - 2.05 сек, можно улучшить на 40%
Chipotle - 0.57 сек, можно улучшить на 33%
Curb - 0.8 сек, можно улучшить на 22%
Walmart - 0.67 сек, можно улучшить на 33%
Zoom - 0.27 сек, можно улучшить на 15%

Из интересных наблюдений, United Airlines тратит 48 мс на JSONDecoder.decode(), что либо стоит делать в бекграунде, либо использовать более быстрые решения, а еще 677 мс на загрузку CoreData на main потоке.
Walmart тратит 20 мс на принты😅.
Zoom's просто засыпает на 41 мс на main потоке.

#performance
👍3👎1😢1
How To Boost Your iOS Code Performance: Reduce Searching In Array

Поиск в массиве имеет сложность O(n), но на практике бывает нужно использовать вложенные циклы, таким образом сложность вырастает до O(n²) и сильнее.
На скринах два примера, как оптимизировать код с помощью Set или Dictionary и улучшить перфоманс

#performance
👍5👎2
Fastlane Magic in iOS (3 мин)

Если в вашем проекте еще не используется Fastlane, эта статья напомнит о его преимуществах в автоматизации:
📸 Снятие скриншотов
👩‍✈️ Дистрибуция бета-версий в TestFlight
🚀 Дистрибуция в App Store
🛠 Ручная конфигурация FastLane File для автоматизации ваших задач

#автоматизация
👍5👎2
An iOS Engineer learns about Android’s Jetpack Compose and loves it (7 мин)

Cамое время серьезно подумать о том, чтобы стать горизонтальным мобильным разработчиком и вот почему:
👉 объединение экспертизы между разработчиками Android и iOS позволяет писать лучшие приложения
👉 Jetpack Compose и SwiftUI - обновление своих императивных предшественников. Оба декларативны, являются state-driven и реактивны
👉 Kotlin несложно освоить для разработчиков Swift

Кривые обучения ускорились, и, поскольку обе платформы имеют схожие принципы, их легче освоить. Это отличный способ закрепить свой набор навыков в будущем, потому что давайте посмотрим правде в глаза: популярность любой из доминирующих мобильных платформ не гарантируется навсегда.

#crossplatform
👍6👎1
Внедрение Allure (отчётность) в UI-тесты (swift, XCTest)

Преимущества связки xcresults с Allure (фреймворк для отчётности) при автоматизации UI тестов:
👉 процентное соотношение пройденных, проваленных, скипнутых и др. тестов
👉 таймлайн
👉 графики с количественной статистикой по статусам, длительности, ретраям и др.
👉 подробная информация по каждому тесту (название теста, ссылка на кейс, шаги, скриншот, длительность теста и каждого шага, ретраи, уровень критичности и др.)
👉 Allure используется при автоматизации других направлений (web, API)

#testing
🔥2👎1
Внедрение iOS 16 идет быстрее iOS 15, но медленнее iOS 14

По данным Mixpanel, внедрение iOS 16 происходит немного быстрее, чем iOS 15. После 24 часов доступности iOS 16 установили 6.71% пользователей по сравнению 6.48% у первого дня iOS 15. Оба обновления отстают от iOS 14, которую загрузили 9.22% пользователей в первый день ее доступности.

Это неудивительно, поскольку iOS 14 была первым обновлением, которое позволило больше настраивать домашний экран iPhone. На домашнем экране появились виджеты, что даже породило свою новую отдельную категорию приложений.

#iOS
👍4👎1
Исследуем Dynamic Island и ActivityKit

Написали пост пост с краткой инструкцией по Dynamic Island, основанный на документации Apple. Недавно вышел гайд на русском языке.

#iOS16
👍4👎2
Save Time With User Breakpoints in Xcode

Облегчаем дебаггинг с помощью User Breakpoints:

🔥 Дефолтные значения в рантайме
Добавляем breakpoint, жмем правой кнопкой мыши, ставим галочку "Automatically continue after evaluating actions", чтобы исполнение не останавливалось. Затем нажимаем "Add action" и добавляем желаемое действие. Примеры на 1, 2, 3 скринах

🔥 Добавить принты в рантайме
Все аналогично пункту 1, для принта используем po, как на последнем скрине

#xcode
👍8🔥1