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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🔨 WEDO 2.0 45300
Экспериментальная рубрика про проекты из реальной жизни. Долго думал, стоит ли делиться не iOS темами в канале и решил делиться с вами тем что связано с инженерией и программированием. Сегодня хочу поделиться первым опытом взаимодействия с набором для робототехники. Изначально это проект Lego, я купил аналог, который совместим с оригинальным ПО. Суть проекта была найти общее хобби с ребенком 6 лет. Я сам люблю программирование и конструкторы, а дочь хотела пойти на кружок робототехники. Мой опыт:
🟢Простой WYSIWYG редактор для создания программ.
🟢Обучающее приложение есть под iPad, Mac OS, Windows, Android
🟢Есть все необходимые конструкции для обучения: переменные, циклы, ветвления
🟢В комплекте кроме самого ресурсного набора (конструктора):
🟣CмартХаб-контроллер, подключается по Bluetooth, питается от батареек, имеет управляемый светодиод и 2 разъема
🟣Мотор
🟣Датчик наклона
🟣Датчик приближения
🟢Для старта в оригинальном приложении множество уроков с подробными инструкциями и открытыми заданиями, погружающие в основы доступных механизмов
🟢Очень интересно сделана интеграция с микрофоном и динамиком. IDE использует микрофон и динамик ноутбука, а не робота, что позволяет реализовать управление голосом и воспроизведение любых звуков
🟢Огромная библиотека с инструкциями для создания 583 роботов и механизмов
🟢За счет того что это Lego (или копия lego) можно использовать любой конструктор lego для роботизации, например моторизировать наборы серии technic
🟢Возможно подключить несколько хабов и моторов и взаимодействовать в рамках одной программы

Как вам подобная рубрика? 👍 / 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍245🔥1🤔1
📱 Проблема: Растущий объем View
По мере роста проектов SwiftUI элементы View становятся длинными и сложными. Простой экран быстро превращается в десятки вложенных VStack, HStack и пользовательских модификаторов.

Искушение: extension-ы и вычисляемые свойства
🔵Многие разработчики пытаются уменьшить размер кода, перемещая его части в расширения.
🔵Это улучшает удобочитаемость тела, но не решает проблему повторного использования и сопровождения.

Альтернативный подход: извлечение и повторное использование
🔵Извлекайте специальные SwiftUI View для каждой части с четкой ответственностью.
🔵Создавайте повторно используемые модификаторы View для согласованности и простоты тестирования.
🔵Используйте общие расширения для просмотра для часто используемых макетов.

Эмпирическое правило для хорошей архитектуры SwiftUI:
🔵Если элемент пользовательского интерфейса имеет четкое назначение и потенциал для повторного использования, извлекайте его.
🔵Если нет, сохраняйте его локальным или используйте вычисляемое свойство.
🔵Разбивайте код на чистые, композиционные и тестируемые компоненты для улучшения архитектуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍6
🐥 Важный нюанс при работе с taskGroup
Интересная особенность работы taskGroup которая не вызывает удивления если уже знаешь о ней, но может привести к неожиданным результатам, если написать похожий код не сильно задумавшись. Суть особенности отлично представлена в примере:
🔵Сниппет кода имитирует сценарий использования withTaskGroup, метод fetchData заменяет сетевой запрос случайной длительности
🔵В taskGroup добавляются задачи по вызову метода fetchData
🔵В конце результат выполнения методов fetchData cсобираются в итоговый массив results
🔵results в том порядке, в котором они были возвращены задачами, а не в том порядке, в котором они были созданы
🔵Чтобы восстановить исходный порядок, требуется добавить индексы в кортеж
В целом, не на столько важно сохранять исходный порядок, важно понимать что порядок будет случайным и не стоит надеяться на сохранение исходного порядка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔨 Combine – швейцарский нож iOS-разработчика. Или нет?
Несмотря на то что я чаще привожу примеры статей про Swift Concurrency, в сердечке все равно Combine. И вот отличная статья для всех, кто еще не использует Combine и сомневается в его полезности.
🔵Combine - швейцарский нож iOS-разработчика для работы с асинхронными событиями в декларативном стиле.
🔵Combine помогает разработчикам управлять потоками данных, избавляя от множества колбэков и ручного управления очередями.
🔵Combine состоит из трех сущностей: Publisher, Operator и Subscriber.
🔵Publisher генерирует значения или ошибки и отправляет их Subscriber.
🔵Operator фильтрует или комбинирует значения между Publisher и Subscriber.
🔵Subscription управляет передачей данных от Publisher к Subscriber и контролирует объем запрошенных данных.
🔵Subscriber является получателем данных от Publisher и обрабатывает их.
🔵Combine интегрируется в SwiftUI через @Published, @ObservedObject, @StateObject, .onReceive(_:) и @EnvironmentObject

Прелесть Combine в том, что его можно объяснить объяснить за несколько часов, за несколько дней по-настоящему освоить и больше никогда не быть прежним
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍1🤔1
🐥🧰 Первый взгляд на Swift SDK for Android
Давайте разберемся, что же нам представили. Swift продолжает выходить за пределы Apple-эко­системы: представлена Nightly Preview версии SDK для Android.
🔵SDK поставляется как часть инсталлятора для Windows или как отдельная загрузка для Linux / macOS.
🔵Опубликован Getting Started guide и пример-репозитории Swift for Android Examples, показывающие end-to-end workflow (Swift код на Android)
🔵Более 25 % пакетов в Swift Package Index уже сборочно поддерживают Android.
🔵В рамках SDK предусмотрена межъязыковая интероперабельность через проект swift‑java: библиотека + генератор биндингов Java ⬅️➡️ Swift.

Как это работает:
🟢SDK подключается к Android NDK / Gradle через toolchain Swift.
🟢Swift-модули компилируются в .so-библиотеки и вызываются из Java.
🟢UI-слой остаётся нативным — Compose / View.
🟢Предполагается использование стандартного Swift-компилятора, адаптированного для Android-платформы (через Android NDK и соответствующие архитектуры).
🟢SDK пока в preview/nightly статусе — то есть инструментальная цепочка и CI ещё на стадии активной доработки.
🟢Swift-пакеты, которые уже поддерживают Android-таргеты, можно переиспользовать без переписывания на Kotlin/Java — особенно слои бизнес-логики, модели данных, алгоритмы.
🟢UI-слой пока остаётся нативным на Android (Compose/View)
🟢Проект swift-java: автоматически генерируются биндинги, это значит: можно в существующем Android-проекте подключить Swift-модуль, либо начать приложение в Swift, но обращаться к Android API/библиотекам.
🟢Альтернатива Kotlin Multiplatform (KMP). В KMP логика пишется в Kotlin и используется на iOS; здесь — логика в Swift и используется на Android. Зависит от того, на каком ЯП логика уже написана

Текущие проблемы:
🔴SDK в превью: не рекомендуется для production-релизов — возможны баги, нестабильности, отсутствие обратной совместимости
🔴Интеграция SwiftUI с Android пока даже не анонсирована — основной фокус на логике.
🔴Инструменты, отладка, CI, работа с эмулятором Android
🔴Не все архитектуры/NDK-версии могут быть поддерживаются
🔴Форум полон описанием крашей и проблем в рантайме
🔴Хотя проект swift‑java генерирует, остаются нюансы: вызовы, управление памятью, поддержка наследования, интерфейсов (тред на реддит)
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1🔥1
📱 Cветящийся, анимированный эффект обводки как в Apple Intelligence
Новый язык дизайна Apple - светящийся, анимированный эффект обводки для выделения форм и компонентов. Если вы захотите внедрить подобный эффект для индикации работы AI - можно взять готовое расширение SwiftUI и применить этот эффект.
🟢Можно применить как бекграунд или оверлей
🟢Гибкая кастомизация толщиты линий, блюра и анимаций
🟢Градиент автоматически генерирует рандомизированные по позициям цвета
🟢Поддерживает уменьшение движения accessibility настройку
🟢Работает со всеми фигурами (Circle, Capsule, RoundedRectangle, итд)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42
🔨iOS 26.1 Beta 4: новые возможности Liquid Glass и другие "особенности"

🟢Переключатель внутри Display & Brightness. В релизе iOS 26.1 Developer Beta 4 Apple впервые дала пользователям контроль над «стеклянным» интерфейсом Liquid Glass. В настройках дисплея, позволяющий выбрать два режима: Clear (прозрачный) и Tinted (более непрозрачный, с высоким контрастом). Для нас это означает, что интерфейсы должны корректно реагировать на оба режима и выглядеть гармонично при разной степени прозрачности.
🟢Новые языки Apple Intelligence (Русского нет). Китайский, датский, голландский, норвежский, португальский, шведский, турецкий, вьетнамский

Проблем, не много:
🔴Не работает ограничение allowCamera в MDM. Один из авторов форума сообщает, что параметр allowCamera=false, который предназначен для запрета доступа к камере на управляемых устройствах
🔴Сбой Broadcast Extension. Это полностью ломает функциональность потоковых приложений и любой другой программы, использующей Broadcast Extension (по сути работает только штатная запись экрана в Фото)

🗓iOS 26.1, по оценкам выйдет в первой половине ноября. Чем раньше вы начнёте тестирование, тем меньше сюрпризов будет после официального релиза.

Заметели какие-то особенности?
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🔨Основные нововведения в Xcode 26.1 beta
🟢Исправления в Instruments. В бета‑версии устранена проблема, из‑за которой инструмент Processor Trace не позволял записывать трейсы на устройствах семейства iPhone 17
🟢Кэширование Swift Package Manager. Пакеты, загружаемые из реестра, теперь кэшируются локально с протуханием через час, что уменьшает количество сетевых запросов при сборке
🟢Улучшения Coding Assistant. Во второй бете улучшено потребление памяти Coding Assistant для проектов с большими git‑репозиториями
🟢Исправления симулятора. Команда simctl list devices --json снова корректно отображает все устройства, когда на машине установлены несколько рантаймов с одинаковыми идентификаторами

Известные проблемы
🔴Проблема запуска симуляторов. После обновления macOS до Sequoia 15.6 симуляторы могут не запускаться при первой сборке. Apple рекомендует выполнить команду xcrun simctl runtime dyld_shared_cache update --all перед запуском симулятора, чтобы завершить генерацию shared‑кэша dyld
🔴Coding Assistant: поиск текста. Инструмент поиска в файлах может возвращать неверные номера строк, что приводит к ошибкам при замене текста
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🎹 Розыгрыш билета на Mobius Осень 2025. Для участия надо быть подписанным на @ios_broadcast и нажать "Участвую!"

Итоги розыгрыша - 06 ноября
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
📱 Текстовые эффекты в SwiftUI с TextRenderer
С выходом iOS 17 и новых версий SwiftUI Apple представила протокол TextRenderer — инструмент, который даёт полный контроль над отрисовкой текста: от линий и слов до отдельных глифов.
Теперь текст можно анимировать, трансформировать и буквально «оживлять».

Ограниченные возможности стандартного Text
🔵Ранее разработчики могли изменять стиль только через модификаторы .font(), .foregroundStyle(), .kerning(), без доступа к самому процессу отрисовки.
🔵Нельзя было сделать продвинутые визуальные эффекты: поэтапное исчезание, покачивание символов, градиенты по строкам.

Использование TextRenderer
🔵Новый протокол предоставляет метод draw(layout:in:), который позволяет работать напрямую с каждой строкой, глифом или атрибутом.
🔵Можно комбинировать с Animatable для создания динамических эффектов (например, пульсации текста).
🔵Через TextAttribute можно задавать разные визуальные эффекты для отдельных частей текста — слово или даже буква могут «жить» отдельно.

Практические идеи:
🔵Создавать визуальные переходы и эффекты появления текста в onboarding-экранах.
🔵Добавлять акценты и микродвижения для повышения вовлеченности пользователя.
🔵Использовать эффекты бережно — цель в выразительности, а не в декорации.

TextRenderer превращает текст в полноценный графический объект SwiftUI.
Теперь дизайнерская выразительность и контроль за рендерингом текста доступны без выхода из декларативной модели SwiftUI.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6
iOS Broadcast
🎹 Розыгрыш билета на Mobius Осень 2025. Для участия надо быть подписанным на @ios_broadcast и нажать "Участвую!" Итоги розыгрыша - 06 ноября
😀 Розыгрыш завершается уже завтра в 12:00, напоминание для тех кто пропустил - никаких дополнительных условий! Рад что моя любимая конференция позволяет делать такие розыгрыши для подписчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1