Статистика по использованию различных размеров Dynamic Size шрифта
David Smith поделился статистикой из своих приложений, которая должна быть +/- репрезентативна – у него миллионы пользователей. Ожидаемо, больше всего у L, но удивляет популярность размера XS.
Тред иконок приложений, сгенерированных Midjourney
Прогресс нейронок, генерирующих иллюстрации, сделал более доступными и красивые иконки для ваших пет-проектов. Посмотрите, какая красота получается!
Консультации с экспертами по работе с App Store
До 8 декабря Apple проводит консультации разработчиков со своими экспертами по различным аспектам работы с App Store: продвижению, оформлению страницы, работе с TestFlight. Формат – презентация по теме и Q&A после нее.
iOS на YaTalks: уже 3 и 4 декабря
На YaTalks, традиционной конференции Яндекса для IT-комьюнити, один из треков посвятили mobile. В нем будет несколько докладов про iOS:
— Умная камера: как встроить в iOS приложение распознавание текста для незрячих.
— Подводные камни локализации iOS-приложений.
— Как iOS анализирует наше здоровье: HealthKit, ResearchKit, CareKit, Activity и какие датчики это считывают.
Кроме докладов организаторы YaTalks подготовили множество других форматов: дискуссии, дебаты, питчинг опенсорс-проектов, рэндом-кофе и индивидуальные консультации с экспертами. Скучно точно не будет.
Зарегистрироваться
Скидки на плейлисты iOS Crew
Мы с командой запустили распродажу всех плейлистов Подлодки под Черную пятницу. Скидка накопительная, больше плейлистов – больше скидон. Вот несколько особенно крутых, которые рекомендую вам посмотреть:
🏎️Перфоманс и профайлинг с кучей воркшопов по разным инструментам и практикам
🌈Анимации: серия воркшопов от простых к самым сложным визуальным эффектам
🤯iOS под капотом: хардкорнейшие сессии про кишки iOS SDK, компилятора и билд системы
🧱Techlead Crew: Проектируем с нуля – для тех, кто хочет вкачать свои архитектурные навыки
Я опоздал рассказать вам про акцию, поэтому лучше поспешить – мы закроем ее уже завтра.
👉Магазин плейлистов
Рассказ об участии в контесте Telegram
Недавно закончился очередной контест Telegram, в котором надо было реализовать медиаредактор. Один из участников конкурса написал по итогам статью, в которой рассказал про:
🏞Реализацию галереи фото пользователя
🛠Медиаредактор: выбор цвета, пипетку и анимации
➰Отрисовку линий без PencilKit
🎨Работу с текстом и реализацию различных эффектов
Симулятор HomeKit устройств
- У Apple есть отдельное приложение, которое позволяет симулировать практически любое умное устройство: лампочки, сенсоры, камеры, дверные замки.
- Приложение HomeKit Accessory Simulator входит в состав Additional Tools for Xcode.
- Симулятор позволяет настраивать различные характеристики устройств. Например, для лампочки можно подкрутить цветовую температуру и яркость.
Перевод на русский язык
📱iOS-разработчик ВК Видео (senior)
VK Видео — это видеоплатформа и стриминговый сервис. В компании будут доступны авторские инструменты по созданию контента для блогеров (видеоредактор, камера, сервис монетизации), а для их пользователей — уникальный контент. В планах стать площадкой №1 для размещения контента в Рунете.
🎯Задачи:
📌Разрабатывать приложение ВКонтакте (продукт видео) под IOS;
📌Создавать новый функционал продукта, реализовывать UX-эксперименты;
📌Следить за работоспособностью сервиса и устранять технический долг;
📌Взаимодействовать с командой менеджеров, дизайнеров, аналитиков и тестировщиков;
📌Принимать участие в планировании, обсуждении проектов.
🔥Требования:
💎Отличное знание Objective-С и Swift;
💎Хорошие знания системных фреймворков iOS и гайдлайны Apple;
💎Знание классических алгоритмов и структуры данных;
💎Навыки профилирования;
💎Опыт работы с аудио или видео на мобильных устройствах (желательно);
💎Активное участие в код-ревью.
🛠 Стек:
⚙️ Swift, Objective-С;
Минимальная версия iOS 14.
🤩Почему у них круто:
✔️Экспертное комьюнити IOS;
✔️ДМС для сотрудника и его детей с первого месяца работы;
✔️100%-ная оплата больничного в течение 30 дней;
✔️Компенсация занятий спортом;
✔️Компенсация питания.
И многое другое, скорее пиши в рекрутеру - @lona736
Ссылка на вакансию: https://team.vk.company/vacancy/26519/
swiftenv – менеджер версий Swift
- swiftenv – консольная утилита, которая позволяет удобно управлять установленными версиями Swift.
- С ее помощью можно как установить глобальную версию Swift, используемую всеми проектами, так и настроить ее локально для отдельных проектов.
Реализация flow layout в SwiftUI с помощью протокола Layout
- Новый протокол Layout позволяет создавать максимально кастомный UI.
- Протокол требует реализации двух функций: sizeThatFits, которая расчитывает лэйаут, и placeSubviews, которая размещает дочерние вьюшки.
Перевод на русский язык
Подборка советов по дебагу
- В .lldbinit можно вынести хелперы, которые вы будете использовать между проектами.
- Команда frame variable или ее алиас v заменяют po и работают быстрее.
- Команда watchpoint позволяет подписаться на изменение переменной.
Перевод на русский язык
Как Swift Concurrency предохраняет разработчика от переизбытка тредов
- Если приложение создает одновременно слишком много тредов, это может повлечь за собой кучу проблем с производительностью. Слишком много – в несколько раз больше, чем ядер в CPU.
- В статье разбираются механизмы Swift Concurrency, которые не дают разработчику совершить эту ошибку, и проводится несколько тестов, чтобы определить границы этой защиты.
Перевод на русский язык
Как запинить Text Field к нижнему краю экрана
Если вы хотите запинить Text Field к нижнему краю экрана, причем таким образом, чтобы он двигался с появлением клавиатуры, используйте модификатор safeAreaInset(edge: .bottom).
Список всех активных пропозалов в Swift на одной странице
На сайте Swift появилась отдельная страница, на которой можно смотреть все текущие активные пропозалы в язык с их статусом, датой следующих изменений и авторами.
Benchmark – SwiftPM плагин для запуска бенчмарков
- Работает как локально, так и на CI.
- Умеет замерять кучу разных метрик по перцентилям.
Модификатор clipped() в SwiftUI не влияет на hit test
- clipped() прячет контент вьюшки, находящийся за пределами ее границ. Но невидимая часть вьюшки все равно продолжает принимать на себя все нажатия, а компоненты, находящиеся под ней, невозможно нажать.
- Чтобы это исправить, используйте дополнительно другой модификатор – contentShape(). Он определяет hit testing area для компонента.
Подборка материалов от Apple про продвижение приложения в App Store
За последний год команда Apple потратила много сил на то, чтобы улучшить документацию в областях, не связанных непосредственно с написанием кода. Один из таких обновленных разделов – статьи про работу с App Store.
👀 Страница приложения и поисковая оптимизация (кастомные лендинги приложений, тестирование страниц, получение фичеринга)
💰Бизнес и аналитика (снижение комиссии до 15%, сравнение бизнес-моделей, бандлинг)
🤩User Engagement (локализация, советы по онбордингу, работа с обновлениями)
Протокол Layout в SwiftUI: кэширование
- SwiftUI умеет автоматически кешировать часть расчетов кастомного лэйаута, но гораздо эффективнее разобраться с кэшированием самостоятельно.
- У протокола Layout есть две функции – makeCache и updateCache, которые позволяют управлять состоянием закешированных расчетов.
- Кэш можно обновлять в функциях sizeThatFits и placeSubviews.
Перевод на русский язык
Скрытие информации Lock Screen Widgets в заблокированном устройстве
- Пользователь может запретить всем lock screen виджетам отображать информацию на заблокированном экране устройства. Но эта настройка довольно глубоко спрятана, а для некоторых типов приложений приватность – критична.
- Чтобы всегда скрывать информацию, нужно сделать две вещи – подкрутить Entitlements в приложении, добавив специальный флаг, и добавить виджету модификатор privacySensitive.
Перевод на русский язык
График с частичным закрашиванием области на Swift Charts
В статье разбирается, как с помощью Swift Charts собрать график, показывающий изменение индекса ультрафиолета в течение дня. Ключевые особенности графика:
- Область графика закрашивается градиентом в зависимости от уровня УФ
- Кривая графика тоже окрашена градиентом
- Текущее время отображается вертикальной линией поверх графика
- Часть графика, относящаяся к прошедшему периоду времени, затемняется
Обновление библиотеки SwiftUI Navigation от PointFree
Доработанный подход к навигации – одна из ключевых фичей будущего релиза TCA 1.0. На пути к нему команда PointFree обновила свою навигационную библиотеку. В релизе две ключевые фичи:
🚏Работа с навигационным стеком
⚠️Новые API для алертов и диалогов
Перевод на русский язык
Правила работы с MainActor
В одной из сессий на WWDC 2022 говорилось, что компилятор гарантирует выполнение кода с атрибутом MainActor на главном потоке. На самом деле, это не так. Все осложняется тем, что нормальной документации пока тоже не завезли, и единственный доступный источник информации – пропозалы про акторы.
Автор статьи пробует задокументировать известную ему информацию про то, как работает атрибут MainActor, и в каких случаях он игнорируется.
Советы от дизайнеров Apple
По мотивам недавно прошедшей сессии Ask Apple команда дизайнеров Apple подбила свои ответы на часто задаваемые вопросы.
🤔Как понять, когда фичей в приложении стало слишком много, и пора упрощать интерфейс
📱Нормально ли ограничивать возможные ориентации приложения
⭐️В каких случаях можно отказаться от подписей элементов меню ТабБара
👀Нормально ли прятать ТабБар при навигации
🌈Каких гайдлайнов придерживаться при работе с цветами и тенями
Перевод на русский язык
Воркшоп по работе с CoreData для тех, кто раньше этого не делал
Организация хранения данных сложнее обычного кеширования результатов запросов – не самая частотная задача в мобильной разработке. Но если вы с ней столкнулись – лучшим инструментом все еще остается CoreData. Про нее важно понимать один факт – это не просто ORM, а целый фреймворк для хранения и управления объектным графом вашей модели данных.
Исходя из данных нашего недавнего опроса, с CoreData так или иначе имело опыт ~50% подписчиков. Так вот, если вы входите во вторые 50%, подключайтесь к открытому уроку ребят из Otus про CoreData и нюансы работы с ней. Вы погрузитесь в теорию и попробуете сразу же применить все знания на практике, написав небольшое приложение со слоем хранения данных. А потом, кто знает, оно и в ваш пет-проект сможет перерасти!
Дата: 25 ноября, 20:00 по Москве
👉Подключайтесь
Обзор новых API для навигации в SwiftUI
Неплохой обзор двух новых навигационных API: NavigationStack и NavigationSplitView. Можно читать статью, а можно сразу посмотреть код примеров на GitHub.
Перевод на русский язык
💰Айосные скидки на Черную Пятницу
Proxyman
Что: proxy-клиент для macOS, как Charles, только модный
Скидка: 30% по промокоду PROXYMAN_BLACK_FRIDAY_2022
Git Tower
Что: Git-клиент для тех, кто любит работать мышкой
Скидка: 50% скидка для всех
LeetCode Premium
Что: Премиум подписка на главный сервис изучения алгосов
Скидка: 20% для всех
Hacking with Swift
Что: Книги и курсы от Пола Хадсона
Скидка: до 50%
Podlodka Crew
Что: записи сезонов всех конференций
Скидка: до 40%
Пост будет обновляться, делитесь находками в комментариях!
Xcode 14 может увеличить размер приложений на 70 процентов
- Приложения, собранные Xcode 14, резко прибавляют в размере, вплоть до 70%.
- Причина в отключении биткода. Из-за этого при загрузке приложений в App Store из них перестала вырезаться лишние метаданные.
- В статье рассказывается, как можно вырезать лишние метаданные вручную.
Перевод на русский язык
Планы Swift на 2023 год
💻Основные направления развития языка:
- Доработка акторной модели многопоточности
- Variadic generics
- Возможности для ручного управления памятью в стиле Rust
- Макросы
- Интероп с С++
🛠️Другие интересные инсайты:
- Создание реестра SwiftPM пакетов, который заменит собой прямую загрузку пакетов с GitHub
- Много планов по улучшению DocC, инструмента для генерации документации
- Фокус Swift на сервере сейчас в основном на переходе всех проектов на Swift Concurrency и стандартизации подходов
Перевод на русский язык
Малоизвестные фичи VSCode extension для Swift
- Быстрая подмена любого пакета на его локальную версию.
- Куча полезных команд: запуск скриптов на Swift, запуск и дебаг сниппетов, выбор нужной версии Xcode.
- Автозаполнение комментариев по шаблону.
- Запуск Swift Command Plugins в виде тасок.
Перевод на русский язык
Quick Navigation в DocC
- DocC – инструмент от Apple для генерации документации и спек для пользовательских библиотек в виде HTML.
- Скоро в DocC появится Quick Search, аналог похожим фичам в IDE.
- Quick Search будет уметь искать символы, похожие на пользовательский ввод, сортировать результаты по релевантности и работать с шорткатами.