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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🔵 Сосредоточьтесь не на задаче, а на проблеме, стоящей за ней
Очередная пятница, очередная статья "на подумать". Ситуация: продакт просит внедрить функции X, Y и Z в систему. Команда самоорганизуется и реализует проект. В итоге попадаем в ситуацию:
🔵Фича работает только для "счастливого пути"
🔵Новая фича разрабатывалась без учета доработок и сразу стала тех. долгом
🔵Пользователи считают функции бесполезными и не используют их

Чья вина такого исхода?
Причина, по которой произошел описанный выше сценарий "программист не виноват", заключается в том, что инженеры слишком сосредоточились на поставленной перед ними непосредственной задаче, в то время как им следовало бы сосредоточиться на проблеме, стоящей за этой задачей, задавая себе такие вопросы, как:
🟢Каков контекст этого запроса? Это более крупный проект, который включает в себя другие функции и задачи?
🟢Кто именно просит об этом? (Действительно ли это кому-то нужно?)
🟢С какой проблемой сталкиваются эти пользователи, что привело к этому запросу?
🟢Кто-нибудь пытался решить эту проблему раньше? Что они пытались сделать?
🟢Кто выиграет от выполнения этой задачи? Как они будут использовать это решение?

На мой взгляд, инженер любого уровня должен задаваться вопросом, а зачем я делаю эту задачу. Техническое совершенство кода не дает хороший пользовательский опыт, а продакт не всегда знает как можно решить ту или иную задачу. Я убежден что нужно подключаться к проработке задач и подходить к своей работе осознанно. Или это не проблема инженера?)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Реализуем UICollectionViewFlowLayout в SwiftUI
Гибкое размещение элементов в зависимости от их размера и дисплея не тривиальная задача, с которой мы встречаемся довольно часто. В UIKit это реализовывалось в UICollectionView через FlowLayout. В SwiftUI в iOS 16 появился протокол Layout. В статье детально разбирается реализация аналогичного Layout для тех у кого минимальный таргет ниже iOS 18. Для тех у кого выше, можно сделать еще проще. Так же в статье рассматриваются вопросы необходимости оптимизации производительности
👍2
🈸 Знакомимся с финалистами
Ежегодно, App Store Awards отмечаются самые лучшие и популярные приложения в App Store, а также их разработчики. 45 финалистов в 12 различных категориях.
На мой взгляд, AppStore "фичиринг" и особенно награды это неформальный способ коммуникации Apple с сообществом о том, что ценится в приложении. Что я заметил:
🟢Раздел App Privacy либо совсем пустой либо минимально заполнен
🟢Поддержка языков
🟢Поддержка iPhone, iPad, Mac, Apple Watch и Apple Vision

Есть исключения, но 2/3 критериев всегда удовлетворены.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Переходы через зум

Мне всегда нравились переходы через зум, это было частью магии iOS когда она называлась еще iPhoneOS, но с iOS 18 в SwiftUI сделать такой переход стало значительно проще.
🟢Переходы с масштабированием доступны для навигации push/pop и полноэкранных переходов
🟢В SwiftUI переходы между масштабами легко реализовать с помощью модификаторов navigationTransition и matchedTransitionSource
🟢В UIKit можно настроить исходное представление и View назначения с помощью свойства preferredTransition
🟢Исходное представление может быть любым, но должно соответствовать View, который запускает переход
🟢Жесты, такие как сжатие, прокрутка по вертикали и горизонтали, доступны для интерактивного изменения масштаба

Материалы:
🟣WWDC24 переходы через зум в SwiftUI и UIKit (14 мин.)
🟣Официальный туториал Apple по реализации переходов через зум в UIKit
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥1
Swift-Testing. Параметризованные тесты

Параметризованные тесты в Swift помогают проверять функции с различными входными данными. Все рассматривается на примере теста для разделения измерений частоты сердечных сокращений на зоны в приложении CardioBot:
🟢Параметр arguments макроса @Test позволяет передавать параметры тестовым функциям
🟢По умолчанию Swift тестирует с комбинацией всех доступных параметров 25 раз
🟢Функция zip может использоваться для объединения параметров и запуска теста 5 раз
🟢Массивы и другие типы данных, соответствующие протоколу сбора данных, могут использоваться для передачи аргументов
🟢Параметризованные тесты помогают улучшить качество кода и избежать ошибок в тестировании
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥽 RealityKit. Симуляция стекла через прозрачные объекты
На старте карьеры, после получения навыков iOS разработки, я заинтересовался разработкой игр. Собрал несколько демок в Unity, реализовал проект с одногрупниками по замене старого тренажера современной игрой и потерял интерес. Я понял что в разработке игр нет никакой магии, но много костылей. Vision Pro возродил интерес к этой области. Просто посмотрите, как это красиво!

🔵Рендеринг прозрачных объектов в 3D-системах сложен. Стекло является наиболее распространенным прозрачным предметом. Эту задачу обычно решают через прозрачные объекты. В этом подходов множество нюансов
🔵При низкой металлизации - стекло потеряет отражения, при высокой - станет слишком темным.
🔵Непрозрачность стекла: слишком высокая - стекло будет выглядеть твердым и потеряет прозрачность, слишком низкая - стекло станет слишком прозрачным и потеряет отражения
🔵Стеклянные предметы, созданные таким образом, выглядят искусственно.
🔵Имитация преломления стекла с помощью излучения окружающей среды - лучший подход.
🔵Преломление фона можно смоделировать, контролируя нормали отражения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2