Telegram Web Link
Apple запустили новостную рассылку для разработчиков

Apple продолжает менять свою стратегию взаимоотношений с разработчиками и становиться более открытым. В этот раз запустили регулярную рассылку, в которую будут включать все ключевые новости, произошедшие за последнее время. В декабрьском выпуске:

👉Использование App Store Connect для работы с Game Center
👉Разбор вопросов про spatial design
👉App Store 2023 awards
👉Интервью с разработчиком Ancient Board Game Collection
Импорт макросов в проект без SwiftPM

Иногда вам может потребоваться импортировать макрос в проект в CocoaPods зависимости или напрямую. В статье разбирается, как скомпилировать макрос в бинарник и корректным образом подключить его к проекту.
Как работает модификатор fixedSize()

В зависимости от типа вьюшки модификатор fixedSize() может как растянуть ее до границ родительской, так и сжать до какого-то небольшого размера. Под капотом там такая логика:

👉Взять пропозал по размеру от родителя
👉Выбрать размер, который идеально подходит самой вьюшке в зависимости от ее контента
Обновлен вводный курс в SwiftUI

Apple обновили курс для тех, кто только вкатывается в SwiftUI. За четыре часа вы изучаете основы фреймворка, работу с анимациями, лэйаут сложных интерфейсов и интероп с UIKit.
Google AI SDK для Swift

Google выпустили SDK, который дает удобный доступ ко всем их моделям, включая совсем свежую Gemini. SDK умеет:

👉Генерировать текст по текстовому вводу
👉Генерировать текст по мультимодальному вводу из текста и изображений
👉Работать в режиме чата
Arc браузер, написанный на Swift, вышел на Windows

Первое большое десктопное приложение, целиком написанное на Swift, вышло на Windows. Я все еще считаю эту идею абсолютно сумасшедшей. Если хотите узнать больше деталей про разработку, вот видео. Весь наработанный тулчейн обещают заопенсорсить.
Как регулируется accessibility

Обзор стандартов, законов и регулировок, которые существуют в разных странах для того, чтобы увеличивать доступность сайтов и приложений.
Добавление описаний к изображениям с помощью OpenAI Vision API

Автор Mastodon-клиента Ice Cubes рассказывает, как с помощью Vision API добавил в свое приложение фичу автоматической генерации описаний публикуемых изображений.
Зачем айосеру учить другие языки

Разработчик из Альфы рассказывает, почему ему нравится изучать языки программирования помимо Swift, и что вообще это может дать айосеру. Список причин такой:

👉Меньше выгораешь от рутины.
👉Получаешь навыки, которые могут пригодиться в будущем. Например, когда захочешь где-то поднять бэкенд.
👉Расширяешь свою картину мира, узнаешь про новые подходы.
👉Быстрее и проще решаешь повседневные задачи и выбираешь подходящие инструменты для автоматизации.
👉Обеспечиваешь себе ветку роста в фуллстека или техлида.

Кстати, мы когда-то писали офигенный выпуск Подлодки с Брагилевским как раз про то, как учить языки программирования.
Как дизайнить bounding box handles

Небольшое эссе про то, как можно накосячить в UX такой стандартной штуки, как управление границами выделенного объекта.
Организация онбординга с помощью паттерна Сага

Сага – паттерн, который помогает описать процессы, затрагивающие сразу много различных компонентов. Например, в условном финтехе Сагой можно представить последовательность запросов к различным сервисам: прайсингу, чекауту, проверки транзакции. Этот паттерн можно использовать и в разработке UI. В статье разбирается, как с его помощью управлять последовательностью онбординговых экранов.
This media is not supported in your browser
VIEW IN TELEGRAM
Примеры Dynamic Island от Apple

Дизайнер Apple поделился подборкой анимаций в Dynamic Island, появившихся в iOS в последних релизах.
Typestate – новый паттерн в Swift 5.9

С появлением Noncopyable типов в Swift 5.9 стало возможным реализовать паттерн Typestate. По сути, это стейт-машина на типах, с помощью которой проверку корректности бизнес-логики можно переложить на компилятор. В статье на простом примере показывают, как этот паттерн реализовать.
Тестирование миграций в SwiftData

На примере семпла SwiftDataAnimals разбирается, как написать миграцию с одной версии схемы на другую и правил но ее протестировать. Результат можно посмотреть на GitHub.
Выпуски Подлодки для айосеров

Подлодка семь лет назад начиналась как подкаст про iOS разработку. Спустя год от этой концепции мы отошли и начали охватывать более широкий круг тем. Но все равно, айосников среди наших слушателей по прежнему очень много. Держите подборку выпусков за 2023 год, которые могут вам зайти:

👉Цвета и цветовые пространства с Андреем Ситником про то, чем отличаются друг от друга CMYK, RGB, OKLCH и другие способы представления цветов на экранах.
👉Ruby c Дмитрием Цепелевым про язык, с которым вы периодически сталкиваетесь, работая с CocoaPods и Fastlane.
👉Мобильные фермы с Антоном Малинским про то, как управлять сотнями девайсов на уровне софта и железа.
👉Backend driven UI с Александром Казарцевым с полным обзором плюсов, минусов и сложностей перехода к нему.
👉Теория сложности с Александром Куликовым с разбором вообще всех стыдных вопросов про алгоритмы.
👉Сыр с Александром Крупецковым, потому что плох тот айосник, который не любит сыр.
👉Рендеринг текста с Никитой Прокоповым про путь, который проходит строчка от хранения в переменной до отображения на экране.

Если вам понравились эти или другие выпуски – напишите нам что-то хорошее в отзывах в Apple Podcasts, или прямо в чатике подкаста!
Видеокурс по SwiftData

Бесплатный цикл роликов на YouTube с разбором всех особенностей работы со SwiftData:

👉CRUD операции
👉Динамические сортировки и фильтры
👉Легковесные миграции
👉Связи один ко многим и много ко многим
👉Работа с CloudKit
Godot для iPad

Miguel de Icaza, известный в том числе тем, что разработал Xamarin, начал в качестве хобби проекта портировать редактор игрового движка Godot для разработки под iPad. Ну как портировать – скомпилировать его уже и сейчас можно, но он заточен под работу с мышью. План – перевести необходимую часть интерфейса на компоненты SwiftUI. Короче говоря, интересный проект, за которым точно стоит наблюдать!
2024/11/05 18:49:53
Back to Top
HTML Embed Code: