iOS Broadcast
3.32K subscribers
1.71K photos
85 videos
976 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
Новое свойство contentUnavailableConfiguration у UIViewController в iOS 17

В этом году на WWDC Apple внезапно расширила UIKit новым API для отображения состояния загрузки, ошибки или пустого контента. Такое улучшение легко сделать самому, но приятно иметь из коробки. Доступно 4 способа создать UIContentUnavailableConfiguration:

👉 Создать с нуля заполнить поля у .empty конфигурации
👉 Использовать готовую .loading конфигурацию
👉 Использовать готовую .search конфигурацию
👉 Использовать UIHostingConfiguration
с блоком в котором можно использовать SwiftUI

#UIKit #WWDC
👍4👎1
Создаем и модифицируем UIKit компоненты в стиле SwiftUI
Простой способ превратить императивный интерфейс UIKit в декларативный. Применив этот подход в вашем проекте вы можете делать код более читаемым. В статье разбирается:

👉 Как структурировать UI компоненты
👉 Как применить протокол-ориентированное программирование для простых задач

#UIKit #DSL #SwiftUI
👎6🔥4👍21
На сколько Swift удобен для DSL? (5 мин)

По следам обсуждения прошлого поста решил написать статью про динамические фишки Swift, @dynamicCallable и @dynamicMemberLookup. Они были добавлены для интеропа с динамическими языками, такими как Python, JavaScript, но их использование этим не ограничивается.

👉 SE-0195 Dynamic Member Lookup
👉 SE-0216 Dynamic callable
👉 SE-0253 CallAsFunction
👉 Примеры использования их комбинаций в повседневных задачах

#swift #proposal #DSL
👍7👎1
Генерализованые API с пакетами параметров

Благодаря SE-0393SE-0398 и SE-0399 в Swift 5.9 появились вариативные дженерики, которые решают важную проблему в Swift - дженерик функции для каждого набора аргументов.
Благодаря этому, например, в SwiftUI убрали лимит на 10 View 🎉.

#wwdc #swift #proposal
👍4👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Глубокое погружение в Observation (13 мин)
На WWDC представили новый фреймворк призванный оптимизировать работу SwiftUI. Советую ознакомиться со статьей перед началом использования нового фреймворка

👉 Зачем нужен Observation
👉 Как объявить Observable Object
👉 Как работает макрос @Observable
👉 Как использовать Observable Object совместно с SwiftUI View

#Observation #SwiftUI #swift
👍1👎1
Анализ .ipa файла Threads app
Ожидаемо ничего интересного или провокационного не обнаружено. Анализ показывает как просто получить доступ к файлам в бандле, и что plist не место для приватных ключей. Из интересного:

👉 Полный набор собственных шрифтов
👉 Библиотеки статически слинкованы
👉 36 локализаций
👉 Metal шейдеры
👉 CoreML модели для оптимизации выдачи ленты на устройстве
👉 info.plist содержит релизный бранч fbobjc/releases/release-igios-2023.07.17

#reverseEngineering
👍5👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Незаметные детали интерактивного дизайна
Лонгрид с примерами интуитивного интерфейса с которым пользователь знакомится через анимации

👉 Метафоры в дизайне
👉 Кинетическая физика анимаций
👉 Жесты смахивания
👉 Отзывчивость интерфейса
👉 Закон Фиттса

#design
👍9👎1
Продление подписки из приложения

С сегодняшнего дня, если подписка не продлевается из-за проблемы с оплатой, в приложении появится предупреждение, позволяющее обновить способ оплаты. Эта функция доступна с iOS 16.4 и для ее внедрения не требуется никаких действий
Подробнее можно почитать в документации - Тестирование ошибок оплаты подписки.

#StoreKit #inAppPurchase
👍6👎1
Виджеты на iOS и Android: что учесть при проектировании и дизайне (13 мин)

- Что и для чего должно быть в виджете
- Размеры и ресайзинг
- Визуальная подача
- Краевые состояния
- Доступность
- Взаимодействие и анимация
- Чек-лист эффективного виджета

#widget
👍5👎1