iOS Dev
Open in Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Show more7 879
Subscribers
-124 hours
-77 days
-4930 days
Posts Archive
7 882
Как добавить автоматическое изменение размера ячеек UICollectionView and UITableView в iOS 16
😎 Изменение, которое наверняка заставит тех из нас, кто годами полагался на
UICollectionView и UITableView, плакать от радости и облегчения (как заметил Джордан Морган, который, написавший одним из первых об этом), теперь автоматически управляет размером ячеек при изменении их содержимого.
ℹ️ Обратите внимание, речь идёт именно про изменение размера (у нас уже давно были self sizing cells).
А теперь, например, если у вас есть лейбл, который то прячется, то вновь показывается, больше не нужно выполнять магические заклинания, чтобы изменить размер ячейки, вычислить ее высоту или что-то еще — теперь это доступно прямо из коробки.
📝 И ещё кое-что, это свойство теперь включено по умолчанию.7 882
Теперь можно изменять размер для sheetPresentation!
😉 Например, если вам нужен участок, который сейчас имеет высоту всего 250 пунктов, это легко сделать с помощью кода выше.
Когда вы создаёте свой detent provider, можно использовать
UISheetPresentationControllerDetentResolutionContext, чтобы увидеть, например, trait collection или установить максимальное значение.
🎉 Неплохо! Кроме этого, можно использовать и прошлые свойства UISheetPresentationController, как установка, например, .largestUndimmedDetentIdentIdentifier.7 882
Эвристика iOS постоянно совершенствуется, например, теперь мы можем обнаруживать деньги и не только с помощью новых детекторов данных.
🛠 Если с
.money всё понятно, то .physicalValue пока что без описания.7 882
Открылась регистрация на WWDC labs и lounges
Что это вообще такое?
💬 Digital lounges
Ежедневно в Slack проходит множество интересных мероприятий.
⚫ Можно задавать вопросы по проектированию и дизайну.
⚫ Следить за переписками в режиме реального времени во время совместного просмотра.
⚫ Знакомиться с другими разработчиками в непринуждённой обстановке.
⚫Экспериментируйте с новейшими фреймворками.
🔵Викторина против лучших в своём деле 9 июня.
💻 Лаборатории
⚫ Получите индивидуальные консультации по основам разработки или сложным концепциям.
⚫ Узнайте, как внедрять новые технологии Apple, принципы дизайна и многое другое.
Кому можно участвовать?
🙋 Активности открыты для всех участников программ Apple Developer Program и Apple Developer Enterprise Program, а также для победителей 2022 Swift Student Challenge.
7 882
Ещё одна фича нового Xcode — Sticky Headers при скролле
😉 Наглядно видна иерархия, работает и для Objective-C тоже.
📓 Разработчикам альтернативных IDE стоит взять на заметку, выглядит очень удобно.
7 882
SwiftUI в ячейках UITableView или UICollectionView с помощью UIHostingConfiguration
⏳ С момента своего первоначального появления в 2019 году SwiftUI обладал приличной совместимостью с UIKit. Экземпляры UIView и UIViewController можно было обернуть для полной совместимости со SwiftUI, а UIHostingController позволял нам отображать SwiftUI в контроллере на базе UIKit.
🤔 Однако, несмотря на то, что в macOS существовал NSHostingView для встраивания SwiftUI в любой NSView, в iOS никогда не было простого способа сделать также. Мы могли взять UIHostingController, но даже это решение было так себе.
😉 В 14 оси ввели content configurations. Этот API теперь был расширен
UIHostingConfiguration, позволяющим определять содержимое ячейки, используя любую иерархию SwiftUI. Здесь статья с разбором, описывающая и некоторые сложности.
Взаимодействие между SwiftUI и UIKit становится все более мощным, и это здорово.
🛠У меня в рабочем проекте не используется SwiftUI, но теперь я вижу веский повод попробовать.7 882
Теперь можно просматривать SF-символы прямо из библиотеки Xcode 14
👍Намного проще и понятнее, чем было ранее.
7 882
📖 Сегодня я хотел бы рассказать вам о необычном канале, посты из которого так или иначе, но могли попадаться вам в чатах по разработке, а может, и в ресурсах, которые мы с вами вместе читаем.
Его автор — Иван, который своей серией постов про структуру системных приложений наглядно показал нам то, как именно в Apple походят к архитектуре.
Например, в этом материале оказывается, что большой отсуп снизу тулбара задан фикс значением от layoutMargins.bottom + 89. Кто бы мог подумать, что Apple с их гайдлайнами используют не всегда кратные числа😮. В системном калькуляторе, например, сетку с кнопками расставили с помощью фреймов.
😅 Кстати, пост про Xcode подтверждает, что в 2022 году важно проверять информацию, особенно 1 апреля.
Рекомендую подписаться на канал @SparrowCode, чтобы ловить инсайды, особенно с выходом iOS 16. Ведь кому-то придётся показать, что внутри😉
7 882
📖 Сегодня я хотел бы рассказать вам о необычном канале, посты из которого так или иначе, но могли попадаться вам в чатах по разработке, а может, и в ресурсах, которые мы с вами вместе читаем.
Его автор — Иван, который своей серией постов про структуру системных приложений наглядно показал нам то, как именно в Apple походят к архитектуре.
Например, в этом материале оказывается, что большой отсуп снизу тулбара задан фикс значением от layoutMargins.bottom + 89. Кто бы мог подумать, что Apple с их гайдлайнами используют не всегда кратные числа😮. В системном калькуляторе, например, сетку с кнопками расставили с помощью фреймов.
😅 Кстати, пост про Xcode подтверждает, что в 2022 году важно проверять информацию, особенно 1 апреля.
Рекомендую подписаться на канал @SparrowCode, чтобы ловить инсайды, особенно с выходом iOS 16. Ведь кому-то придётся показать, что внутри😉
7 882
Новый синтаксис в Swift 5.7 для optional unwrapping
😎 В Swift 5.7 появился новый, более лаконичный способ optional unwrapping с помощью операторов
if let и guard let.
👌Теперь мы можем просто опустить присваивание после оператора if let, и компилятор Swift автоматически преобразует наш опциональный параметр в конкретное значение с точно таким же именем.
Также это сработает и для guard.
👍 Конечно, у нас все еще есть возможность делать как раньше: из-за стиля кода, либо если мы хотим дать другое имя преобразуемому опциональному значению.7 882
В Xcode 14 добавили code snippet для генерации memberwise initializer 🎉
Ну наконец-то! Раньше для этого можно было юзать, конечно, правую кнопку мыши и так далее, но теперь-то заживём 😅
7 882
Обновления для Simulator в iOS 16
🎉 Simulator теперь поддерживает удаленные уведомления в iOS 16 при запуске в macOS 13 на Mac с Apple silicon или T2. Используется Apple Push Notification Service Sandbox. Каждый симулятор генерирует токен из комбинации самого симулятора и аппаратного обеспечения Mac.
🎉 Уведомления поддерживают больше функций с помощью .apns payload или команды simctl push.
🎉 simctl теперь поддерживает управление симуляцией местоположения, включая запуск сценариев и интерполяцию между списком путевых точек.
⚫ simctl addmedia прокачан для поддержки многих дополнительных форматов изображений (включая многие популярные форматы RAW).
⚫ Теперь вы можете загружать устройства симулятора, например x86_64 на Mac с Apple silicon, используя новый аргумент командной строки --arch в simctl boot.
Внимание! Токены симулятора могут быть длиннее, чем токены физического устройства. Не задавайте жестко определенную длину или формат для этих токенов.
7 882
Немного о том, что умеет новый Xcode
1️⃣ На 30% меньше двоичный файл. SDK можно ставить отдельно.
2️⃣ Проекты собираются на 25% быстрее благодаря улучшенному параллелизму на всех этапах сборки и соединения.
3️⃣ А новая временная шкала сборки помогает выявить неожиданно затянувшиеся задачи сборки и узкие места в вашей сборке. Как тут не упомянуть Build Graph от Михаила Рубанова. Может быть, это новые возможности?
4️⃣ Новый target создает единый интерфейс SwiftUI для использования на iOS, iPadOS, macOS и tvOS.
5️⃣ Регулярки в Swift с подсветкой синтаксиса, поддержкой рефакторинга и многим другим.
6️⃣ Swift, SwiftUI и Xcode 14 работают как единое целое. Превью SwiftUI сразу же интерактивно, а светлый и темный интерфейсы доступны одним щелчком мыши.
@iOS Dev
7 882
Список всех новых фреймворков, доступных в iOS 16
⚫ App Intents — для Siri и быстрых команд.
⚫ AVRouting — для потокового мультимедиа в маршруте.
⚫ BackgroundAssets — фоновая загрузка тяжелых ресурсов.
⚫ CarKey — удалённые функции авто без ключа.
⚫ Swift Charts — графики на каждой Apple-платформе.
⚫ DeviceDiscoveryExtension — стриминг медиа на стороннее устройство.
⚫ DeviceDiscoveryUI — подключаем tvOS к мобильному приложению.
⚫ Distributed — для создания распределённых систем.
⚫ ExtensionFoundation — исполняемые пакеты для расширения функциональности других приложений.
⚫ ExtensionKit — для расширения функциональности других приложений, представив пользовательский интерфейс.
⚫ MetalFX — для повышения производительности Metal.
⚫ Push To Talk — cистемный пользовательский интерфейс для служб Push-to-Talk вашего приложения.
⚫ RegexBuilder — регулярные выражения теперь на более понятном языке.
⚫ RoomPlan — для создания 3D-модели комнаты, интерактивно помогая людям сканировать свое физическое окружение с помощью камеры устройства.
⚫ Spatial — для создания трёхмерных математических примитивов и управления ими.
⚫ WeatherKit — погодные условия и оповещения для пользователей.
🙆 Лично я выделил бы Swift Charts, ExtensionKit, RegexBuildex. Всё это выглядит впечатляюще!
😎Собрал список в одном месте специально для разработчиков и читателей:
@iOS Dev
7 882
Обновления при установке Xcode
😎 Если вам показалось, что теперь наша среда разработки устанавливается быстрее, то так оно и есть.
😉 По дефолту в комплекте качаются SDK для iOS и macOS, а всё остальное можно выбрать при первом запуске.
Почему так сразу не сделали!
7 882
ℹ️ Появились важные обновления в App Store Review Guidelines
📌 2.5.4: Удалено требование для приложений, использующих фоновый режим определения местоположения. Не нужно показывать напоминание, что это может значительно сократить время работы от батареи.
🤔 Возможно, Apple получали жалобы от пользователей. Плюс для разработчиков в том, что количество негативных отзывов снизится.
📌 4.2.3: Удалено требование о включении в двоичный файл содержимого, достаточного для функционирования приложения при запуске.
🤔 Похоже, первый запуск в некоторых приложениях затянется.
📌 4.7: Удалено ограничение на проведение лотерей или благотворительных пожертвований в коде, не встроенном в двоичный файл.
📌 5.2.5: Если ваше приложение отображает данные Apple Weather, оно должно следовать требованиям атрибуции, представленным в документации WeatherKit.
📌 5.3.3: Удалено ограничение на покупку лотерейных билетов или инициирование перевода средств в приложении.
🤔 Считаю, что перевод средств останется под жестким ревью.
7 882
‼️В Apple раскатили Xcode Cloud beta для всех
📧 Получил сегодня письмо, в котором говорится, что для начала нужно принять обновление лицензионного соглашения.
😎 Взамен предлагают 25 вычислительных часов в месяц бесплатно до конца 2023 года.
7 882
SwiftUI так и манит нас писать на нём проекты в проде!
Swift Charts - это мощный и лаконичный фреймворк SwiftUI для преобразования данных в информативные визуализации. С помощью Swift Charts вы можете создавать эффективные и настраиваемые графики с минимальным количеством кода.
👏 Этот фреймворк предоставляет метки, шкалы, оси и легенды в качестве компонентов, которые можно комбинировать для создания широкого спектра графиков, управляемых данными.
🧑💻 Графики — теперь нативнее некуда!
7 882
Ну неужели они это сделали!
🥳 В общем, теперь можно использовать одну единственную иконку, которая заресайзится сразу под все нужные размеры в зависимости от таргета!
🎉 Кайфово? Да! Конечно, уже были сторонние решения для этого, которые упрощали жизнь, но теперь-то это будет нативно. Amazing!
ℹ️ Сейчас раздел с release notes подлагивает, но позже, надеюсь, он вернётся к своему рабочему состоянию.
