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

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

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
💡Детальний розбір модифікаторів Overlay і Background у SwiftUI

У інструментарії SwiftUI overlay і background відіграють незамінну роль у різних сценаріях розробки.

📖 У цій статті розглянуті не тільки їх унікальні атрибути, але й розбираються фундаментальні відмінності від ZStack, а також показані приклади сценаріїв, для яких вони призначені.

🇺🇦 iOSDevUA
👍1
💡Якщо ви використовуєте SwiftUI, то напевно використовуєте і .onTapGesture(). Ось стаття, де автор говорить, що з цим потрібно бути обережнішим. І наводить кілька прикладів, де це може призвести до проблем 🤔

👉 https://www.swiftwithvincent.com/blog/be-careful-when-using-ontapgesture

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

У більшості випадків нам підійде варіант:

let image = UIImage(named: "big-image")
imageView.image = image


Але якщо картинка дійсно велика, то це може візуально підвісити додаток на деякий час.

Особливо це проявиться, наприклад, при роботі з колекціями.

У такому випадку можна справедливо звернутися до документації (та до поради Вінсента), в яких говориться про те, що все ж є ще один спосіб.

prepareForDisplay декодує нашу картинку у фоновому потоці, і лише після цього можна використовувати результат із completionHandler.

Важливо не забути повернутися у головний потік, звісно.

Або використовувати Task, якщо ви вже перевели (або переводите проект для Swift Concurrency).

🇺🇦 iOSDevUA
💡Відео з мітапу Swift Server Side

Нещодавно відбувся перший офіційний мітап Swift Server Side. Програма така:

👉 Як використовувати Swift на Linux, зокрема в хмарі та на портативних пристроях
👉 Розповідь про Vapor від одного з його розробників
👉 Q&A з учасниками Server-Side Workgroup

🇺🇦 iOSDevUA
👍1
💡Гайд по Swift Argument Parser

Якщо ви пишете на Swift якісь консольні додатки, ви точно використовуєте пакет Swift Argument Parser. У серії постів розбираються всі деталі роботи з ним, зокрема:

👉 Скорочені та повні флаги
👉 Інверсія флагів
👉 Флаги з enum'ами

З цікавого – прямо в статтю вбудована інтерактивна консоль, у якій можна погратися з прикладами.

🇺🇦 iOSDevUA
📲 Apple випускає четверті бета-версії для розробників та публічні бета-версії для iOS 17.5, macOS Sonoma 14.5 та інші.

Release Notes:
👉 iOS & iPadOS 17.5 Beta 4 (21F5073b)
👉 macOS Sonoma 14.5 Beta 4 (23F5074a)
👉 tvOS 17.5 Beta 4 (21L5567a)
👉 visionOS 1.2 beta 4 (21O5580a)
👉 watchOS 10.5 beta 4 (21T5571a)

🇺🇦 iOSDevUA
🇺🇦 iOS Dev UA - спільнота iOS розробників
💡Гайд для Privacy Manifest від інженерів Apple Продовжуємо актуальну тему Privacy Manifest. Відео гайд від Apple як його створити, а також опис всіх API reasons. 🇺🇦 iOSDevUA
🤚 Якщо в додатку має бути Privacy Manifest, але його немає, то білд не візьмуть на перевірку. До 1 травня були попередження, а вже сьогодні — вимога.

🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💡Як TextView працює під капотом

Найкраща стаття минулого тижня. Розбір купи деталей того, як TextView працює під капотом – починаючи з того, як обробляються стилі у AttributedString, закінчуючи тим, як курсор реагує на натискання кнопок на клавіатурі в залежності від положення в тексті.

👉 https://papereditor.app/internals

🇺🇦 iOSDevUA
👍1
💡Створення додатку-чату, використовуючи StreamChat SDK та SwiftUI

🛠 SDK на Github включає в себе гарний набір високопродуктивних та налаштовуваних компонентів інтерфейсу.

📖 А в цій статті наводиться приклад налаштування (близько 100 рядків коду на повністю робочий додаток).

Додам, що SDK та приклад додатку дозволять ознайомитися з чатом, але при власній реалізації чекатимуть зовсім інші складнощі. Наприклад, як додаток буде справлятися з сотнями повідомлень в секунду (вірте, буває і таке), і як при цьому буде поводити себе інтерфейс. Втім, це зовсім інша історія😎

🇺🇦 iOSDevUA
👍1🔥1
💡У Swift 6 імпорти можна буде робити публічними або приватними. Це також вплине на ваші публічні функції, якщо ви хочете в них повернути щось, що заімпортовано з якоїсь бібліотеки, наприклад, а вона приватна.
Загалом виглядає цікаво, але набагато цікавіше зрозуміти, який профіт ми з цього отримаємо і як це позначиться на часі збирання, наприклад, та інших важливих речах.
Детальніше можна подивитись у статті, але найцікавіші дослідження з цієї теми ще попереду, думаю!

👉 https://www.polpiella.dev/swift-6-import-access-level

🇺🇦 iOSDevUA
💡Apple змінює умови комісії Core Technology Fee, це та, що про альтернативні магазини:

1. Якщо не заробляєте на додатках, то CTF анулюється. Тільки персональні додатки, бізнесу не можна. Підтверджувати статус щорічно.

2. Якщо додаток став вірусним у перші три роки, то CTF за понад мільйон установок брати не будуть. Дохід повинен бути менше €10 млн.

3. Адаптивний CTF від доходу:
До €10 млн: CTF не стягується протягом трьох років.
Від 10 до 50: CTF до €1 млн на рік протягом трьох років.
Понад 50: стягується повний CTF.

Apple раніше говорила, що їхня комісія небезпечна для студентів та вірусних додатків. Нові умови пом'якшують це.

👉 https://developer.apple.com/news/?id=d0z8d8rx

🇺🇦 iOSDevUA
💡Про Safe Area, мабуть, знають усі, і що стосується UIKit, вже давно мали б навчитися працювати з нею.
А от з SwiftUI + Safe Area ще можуть бути проблеми, думаю.
Ось стаття, яка, якщо і не закриє всі питання, то хоча б з базовими має допомогти 👍

👉 https://swiftwithmajid.com/2021/11/03/managing-safe-area-in-swiftui/

🇺🇦 iOSDevUA
👍3
Створення та налаштування платіжної стінки в SwiftUI за допомогою StoreKit💡

🇺🇦 iOSDevUA
👍3🔥1
💡Детально про reduce та про те, як і де його можна використовувати.
Впевнений, що багато хто не особливо працював з цією функцією, але після цієї статті мають почати 👍
Ну і, звісно, усім новачкам обов'язково до ознайомлення!

👉 https://www.polpiella.dev/mastering-the-reduce-operator-in-swift

🇺🇦 iOSDevUA
👍1
Xcode видалив увесь список симуляторів, що сталося?

Вчора (і можливо, позавчора) я зіткнувся з цікавою поведінкою у нашому середовищі розробки. Схоже, багато з вас теж.

При цьому перезапуск Xcode малоймовірно допоміг, а ось повний ребут — так, то що ж сталося?

Я провів невелике розслідування.

Кілька днів тому система захисту macOS від шкідливого ПЗ XProtect отримала оновлення 132, яке виявило помилкову реакцію на образ диска з симулятором і намагалося її виправити, і саме це спричинило зникнення усього списку симуляторів.

Вийшло silent-оновлення 133 (ймовірно воно вже застосувалося, але якщо ні - перевірте оновлення у системі).

Помилку можна було помітити і без оновлення Xcode, і навіть при завантаженні симулятора нічого б не змінилося (хоча одним із рішень було використати команду sudo killall -9 http://com.apple.CoreSimulator.CoreSimulatorService).

Так що й Apple іноді тестують на проді 🥴.

Детальніше, якщо вас зачепило, і вам теж цікаво, можна прочитати ось тут, тут і тут.

🇺🇦 iOSDevUA
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Чи знаєте ви про цю чудову функцію в Xcode? Замість того, щоб набирати все, просто почніть набирати 3 перші символи з назви та параметрів, наприклад, frawihe. Якщо вам потрібен весь обсяг - натисніть Alt та Enter.

🇺🇦 iOSDevUA
💡Dispatch Barrier, потокобезпечність і чому занадто багато черг це погано

Паралельні та послідовні черги допомагають нам управляти виконанням завдань, а разом з тим дозволяють нашим додаткам працювати швидше та ефективніше.

Ми можемо легко створювати черги, використовуючи клас DispatchQueue, який побудований на основі GCD.

🦾 Dispatch Barrier представляє собою механізм синхронізації завдань у черзі.

Якщо за замовчуванням черга працює паралельно, то після додавання прапорця .barrier таке завдання буде відкладене, доки не виконаються всі інші. Вже після цього черга виконає наше завдання, помічене бар'єром, самостійно, і повернеться до звичайного режиму роботи.

👉 https://medium.com/@ranga.c222/dispatch-barrier-in-swift-84779f49a291

🇺🇦 iOSDevUA
Напевно багато хто чув про Test-Driven Development (той самий TDD). Але мало хто його використовує. Так от якщо ви раптом захочете почати його використовувати, або вам просто цікаво трохи детальніше розібратися в цій темі, то ось непоганий матеріал з прикладами!

👉 https://www.avanderlee.com/workflow/test-driven-development-tdd-for-bug-fixes-in-swift/

🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Реліз SystemNotification 1.0

SystemNotification – бібліотека, яка допомагає реалізовувати сповіщення в SwiftUI, повторюючи зовнішній вигляд та поведінку системних попапів. Можна як кастомізувати стандартний вигляд сповіщення, задавши іконку та текст, так і додавати свою в'юху.

🔗 Getting Started
🔗 Демо додаток

🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Стаття про те, як додати такий чудовий «stretchable & sticky» хедер, який, по суті, буде розтягуватися і прижиматися до верху екрана в залежності від вашого скролу. При використанні SwiftUI, звичайно, тому що для UIKit таких статей море і вже давно всіми прочитані (сподіваюся)!

👉 https://danielsaidi.com/blog/2023/02/09/adding-a-sticky-header-to-a-swiftui-scroll-view

🇺🇦 iOSDevUA
👍2🔥1