🇺🇦 iOS Dev UA - спільнота iOS розробників
384 subscribers
399 photos
42 videos
9 files
960 links
Перша україномовна спільнота iOS розробників 🇺🇦

👨‍💻Цікаві матеріали зі світу розробки для продуктів Apple.
Статті по розробці на Swift та SwiftUI. Огляд нових технологій в розробці від Apple.

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
💡Як заборонити створення скріншотів для важливих екранів у Swift

Для цього підійде елегантне рішення з використанням властивості isSecureTextEntry за допомогою кастомного модифікатора.

📖 У цій статті автор ділиться необхідними кроками з прикладом коду.

😎 До речі, цей спосіб актуальний і для запису відео з екрана пристрою.

🇺🇦 iOSDevUA
💡Велике оновлення App Store Connect — версія 2.0

🎉 Apple оновили додаток (сподіваюся, тепер не буде постійного дропу сесій, як раніше), тепер можна підписатися на сповіщення про фічеринг і не тільки.

👉 Оновлений, зручний інтерфейс.
👉 Інструменти для створення промо-матеріалів: тепер можна швидко створювати банери та відео для соцмереж.
👉 А ще з’явився цілий розділ, в якому можна безпосередньо номінувати своє додаток на фічеринг (серед типів — додавання контенту, покращення функціональності або загальний запуск).

📖 Дізнатися більше про номінації та нові доступні ресурси можна тут.

🇺🇦 iOSDevUA
Hello iOS developers! New iOS news digest is here!

The main news from the last weeks - memes are forbidden now on the Swift forum 😁
https://forums.swift.org/t/forums-policy-on-memes-and-other-expressive-images/75714

Let's get more familiar with Actors in Swift
Understanding actors in Swift
Learn how to use Swift actors to prevent data races when working with concurrency:
https://tanaschita.com/swift-actors-basics

MainActor usage in Swift explained to dispatch to the main thread
MainActor is a new attribute introduced in Swift 5.5 as a global actor providing an executor that performs its tasks on the main thread. When building apps, it’s essential to perform UI updating tasks on the main thread, which can sometimes be challenging when using several background threads. Using the @MainActor attribute will help ensure your UI is always updated on the main thread:
https://www.avanderlee.com/swift/mainactor-dispatch-main-thread

Using ViewThatFits to Create a More Accessible List Cell in SwiftUI
Creating accessible user interfaces is a crucial aspect of modern app development. However, ensuring that your app is accessible to all users can sometimes be challenging. In this article, we’ll explore how to use the ViewThatFits component to create more visually accessible list cells in your SwiftUI apps:
https://blog.stackademic.com/using-viewthatfits-to-create-a-more-accessible-list-cell-in-swiftui-e87dc8feb4d4

Automatic Trait Tracking
In iOS 18, UIKit automatically tracks when you access a trait, removing the need to manually register for trait change notifications:
https://useyourloaf.com/blog/automatic-trait-tracking

Crafting Seamless Journeys with Live Activities
Very interesting and detailed article about implementing Live Activities in the iOS application from Lyft team:
https://eng.lyft.com/crafting-seamless-journeys-with-live-activities-abe82e98546f

Measuring View Visibility Percentage in SwiftUI Using PreferenceKeys
Today we will talk about PreferenceKeys in SwiftUI and how to use it to get how much of a percentage of a view is showing on the screen:
https://holyswift.app/measuring-view-visibility-percentage-in-swiftui-using-preferencekeys
💡Створення адаптивної верстки в SwiftUI з використанням Layout-протоколу

Комбінація UICollectionView та UICollectionViewFlowLayout у UIKit дає багато гнучкості та контролю для створення будь-яких необхідних макетів, але в SwiftUI з цим можуть виникнути труднощі.

Важливо мати навички для створення верстки, яка добре виглядає і в портретній, і в альбомній орієнтації екрану.

📖 У цьому матеріалі розглядається підхід з використанням протоколу Layout (доступного з iOS 16).

🇺🇦 iOSDevUA
💡Плани swift-foundation на 2025

Команда, що розробляє версію Foundation на Swift, поділилася планами на наступний рік:

👉 Покращення продуктивності бібліотеки, зокрема — написання нових бенчмарків
👉 Продовження переписування частин Foundation з C на Swift
👉 Допомога спільноті в виправленні незначних, але дратівливих проблем у дизайні та реалізації

🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Реалізація додатка для гри в шахи на SwiftUI

David v.Knobelsdorff нещодавно створив шаховий додаток від початку до кінця за допомогою SwiftUI та задокументував весь процес у своєму блозі.

Це об’ємний матеріал (аж з дев’яти частин), але його варто прочитати, якщо ви цікавитесь шахами або шукаєте хороший приклад створення повноцінного додатка на SwiftUI.

1️⃣ Мотивація та термінологія.
2️⃣ Навіщо потрібні pgn-файли і як з ними працювати.
3️⃣ Реалізація логіки.
4️⃣ Створення набору компонентів.
5️⃣ База даних та кодування ходів.
6️⃣ FSRS-алгоритм (тут можна прочитати про нього додатково).
7️⃣ Шахові головоломки.
8️⃣ Використання локального шахового движка.
9️⃣ Тестування та висновки.

🇺🇦 iOSDevUA
🔥6
💡Аналог Cursor для Xcode

Новини з Copilot не закінчуються. Вийшов в бета-версії стартап Alex Sidebar, який позиціонується як Cursor для Xcode. Що він вміє:

👉 За шорткатом відкривати чат, в контекст якого потрапляє виділений фрагмент коду
👉 У сайдбар, відкритий поруч з Xcode, можна перетягувати зображення, для якого буде згенерований код
👉 Семантичний пошук по всій кодовій базі
👉 Автоматичний фікс помилок
👉 Автоматичне створення нових файлів коду

Поки в бета-версії, спробувати можна безкоштовно.

🇺🇦 iOSDevUA
🔥3
💡Що таке краш в iOS: детальний розбір

Звичайно, факт того, що краш — це завершення роботи додатка, є очевидним.

Джейкоб Бартлетт розглядає природу збоїв з іншого боку, адже насправді система викликає краш, щоб зберегти пристрій в безпеці.

📖 Ділюсь чудовою статтею, у якій складна тема розглядається з гумором (і навіть наведені 9 рівнів зла від падіння фрейм-рейту до компрометації системи в цілому).

Розглядаються збої не тільки в рантаймі, але й в ядрі XNU, а також зазначено, чому краши — далеко не найгірше, що може статися з пристроєм.

🇺🇦 iOSDevUA
🔥5👍1🤩1
💡Swift проти мемів

Ладно, а тепер – справжня головна новина тижня. На форумі Swift заборонили меми, тож, за властивістю транзитивності, публікувати меми тепер заборонено і всім айосерам.

🇺🇦 iOSDevUA
💡Виявлення облич на зображеннях за допомогою фреймворку Vision

Розпізнавання облич може бути корисним інструментом для багатьох додатків.

Наприклад, в системному «Фото» від Apple це використовується для організації спеціальної колекції.

В iOS 18 для розробників з’явилася можливість використовувати новий запит FaceObservation, який спрощує роботу з такими завданнями.

📖 Доступне пояснення та приклад використання є в цій статті.

🇺🇦 iOSDevUA
🔥1
💡Невеликий матеріал про те, як запитати у Apple прискорене рев’ю вашого додатку. Наприклад, тому що ви терміново хочете випустити фікс критичної помилки 😱
Сподіваюся, що багато хто вже знає про це, але в будь-якому випадку ось:

👉 https://www.polpiella.dev/expedited-app-reviews

🇺🇦 iOSDevUA
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
💡Ефект переливаючогося стикера на Metal+Swift

🤩 Знайшов блискучу (в прямому і переносному сенсі) реалізацію фойл-ефекту. До речі, автор пише, що намагався відтворити те, що можна побачити в різних картках, наприклад, у покемонах.

Використано одразу кілька шейдерів і модифікацій всередині.

📖 Бонусом йде репозиторій з кодом (з коробки доступно для налаштування кілька параметрів).

🇺🇦 iOSDevUA
5
💡Докладне пояснення роботи з Environment в SwiftUI

Автор статті вважає, що SwiftUI справжнім чином революціонізував розробку додатків завдяки декларативному синтаксису та реактивній обробці даних, значно спростивши створення динамічних та відзивчивих користувацьких інтерфейсів.

В основі фреймворка лежить обгортка властивостей @Environment (і пов’язані з цим інструменти).

📖 У статті детально описані різні механізми, від класичних протоколів @EnvironmentObject і ObservableObject до відносно нових макросів @Observable і @Bindable.

А ще приділено увагу продуктивності та складним ієрархіям view в додатку.

🇺🇦 iOSDevUA
👍21
💡Системний промпт для Apple Intelligence

Інженери в Apple, так само як і всі інші, не дуже добре розуміють, як взагалі працює LLM.

🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Інтеграція Live Activity і Dynamic Island в iOS: докладний посібник

📖 У масштабній статті описані етапи, які дозволяють ефективно інтегрувати Live Activities та Dynamic Island у додаток для iOS.

Плюс у тому, що розглянуто кожен крок: від обмежень дизайну до обробки оновлень.

📺 Також матеріал доступний у форматі відео.

🇺🇦 iOSDevUA
5👍1
🚀 Swift Pathway – офіційний гайд по мові

Apple випустили чудовий вступний гайд по Swift, який можна надсилати всім, хто цікавиться цією мовою: розбір базових концепцій та фіч, сумісність з різними платформами та безліч посилань на детальні матеріали по кожній темі.

🇺🇦 iOSDevUA
👍1
💡swift-format в Xcode 16

У Xcode 16 з’явився вбудований автоформаттер для коду. Автор статті порівнює його результати з SwiftLint та Prettier і розбирає, як правильно налаштувати його для вашого проєкту.

🇺🇦 iOSDevUA
👍31🔥1
💡Чому xcodebuild працює повільніше в GUI Xcode

Якщо ви збираєте iOS додаток на CI або з консолі, не відкриваючи Xcode, ви безпосередньо використовуєте xcodebuild. І є концептуальна проблема – інкрементальні білди працюють суттєво повільніше, ніж при збірці з Xcode. Це в основному спричинено тим, що Xcode використовує набір приватних API для того, щоб тримати сервіс постійно прогрітим, а в CLI його доводиться щоразу запускати вручну. Однак є кілька способів трохи покращити ситуацію, які і розглядаються в статті.

🇺🇦 iOSDevUA
1👍1
💡Оптимальний спосіб пошуку входження рядка за користувацьким запитом

У різних мовах можуть бути різні варіанти написання одного й того ж терміну. Тому, при реалізації пошуку входжень підрядка за запитом користувача, найкраще скористатися функцією localizedStandardRange(of:). Вона імітує стандартну поведінку пошуку в iOS, ігноруючи особливості написання та діакритичні знаки.

🇺🇦 iOSDevUA
👍3