💡Малювання кастомних фігур у SwiftUI: приклади та код
У SwiftUI протокол Shape визначає контур нашої в’ю.
Він використовується для малювання та проектування власних фігур або контролів різної складності.
📖 У цьому матеріалі можна ознайомитися зі створенням не тільки простих речей (наприклад, трикутників), але й з набагато більш цікавими прикладами з анімаціями.
🇺🇦 iOSDevUA
У SwiftUI протокол Shape визначає контур нашої в’ю.
Він використовується для малювання та проектування власних фігур або контролів різної складності.
📖 У цьому матеріалі можна ознайомитися зі створенням не тільки простих речей (наприклад, трикутників), але й з набагато більш цікавими прикладами з анімаціями.
🇺🇦 iOSDevUA
Офіційний GitHub Copilot для Xcode 🥳
Open Source і інтегрований безпосередньо в Xcode. Поки в беті.
Встановлюється як додаток — інструкція в README.
👉 https://github.com/github/CopilotForXcode
🇺🇦 iOSDevUA
Open Source і інтегрований безпосередньо в Xcode. Поки в беті.
Встановлюється як додаток — інструкція в README.
👉 https://github.com/github/CopilotForXcode
🇺🇦 iOSDevUA
🔥4
💡Як працювати з passkeys у iOS-додатку
Passkeys використовуються для автентифікації користувачів без використання пароля (після WWDC 23 Apple навіть додала фразу:
Сама пара public + private ключ створюється кожного разу при генерації нового облікового запису.
Щоб отримати доступ до контенту, користувачі можуть використовувати PIN-код або біометрію.
📖 Тут є корисний матеріал про те, як налаштувати passkeys у вашому додатку та приклад реалізації на GitHub.
🇺🇦 iOSDevUA
Passkeys використовуються для автентифікації користувачів без використання пароля (після WWDC 23 Apple навіть додала фразу:
При використанні passkey з сервера нічого немає вкрасти).Сама пара public + private ключ створюється кожного разу при генерації нового облікового запису.
Щоб отримати доступ до контенту, користувачі можуть використовувати PIN-код або біометрію.
📖 Тут є корисний матеріал про те, як налаштувати passkeys у вашому додатку та приклад реалізації на GitHub.
🇺🇦 iOSDevUA
💡Як створити zip-архів
Виявляється, у Foundation є системний API, який дозволяє створювати zip-архів за переданим йому URL папки. Код можна переглянути тут.
🇺🇦 iOSDevUA
Виявляється, у Foundation є системний API, який дозволяє створювати zip-архів за переданим йому URL папки. Код можна переглянути тут.
🇺🇦 iOSDevUA
Medium
How to easily create ZIP files in Swift without third-party dependencies
If you’ve ever worked on an iOS app with complex networking, sooner or later you’ll probably need to create ZIP archives from your files…
💡Проектуємо Network Layer в iOS
Звичайно, ідеального рішення не існує.
Але є кілька хороших прикладів (відправних точок) для створення модульного, розширюваного та тестованого мережевого шару в iOS.
У двох великих статтях автор розповідає про свій підхід до реалізації на прикладах:
📖 Проектування API-клієнта (створення запитів, приклад реального варіанту використання, авторизація + логування).
📖 Друга частина присвячена модульним та інтеграційним тестам.
🇺🇦 iOSDevUA
Звичайно, ідеального рішення не існує.
Але є кілька хороших прикладів (відправних точок) для створення модульного, розширюваного та тестованого мережевого шару в iOS.
У двох великих статтях автор розповідає про свій підхід до реалізації на прикладах:
📖 Проектування API-клієнта (створення запитів, приклад реального варіанту використання, авторизація + логування).
📖 Друга частина присвячена модульним та інтеграційним тестам.
🇺🇦 iOSDevUA
❤2
💡SpectreKit – бібліотека для консольного UI
SpectreKit – поки що ще сира бібліотека для того, щоб створювати красивий UI для консольних додатків, написаних на Swift.
🇺🇦 iOSDevUA
SpectreKit – поки що ще сира бібліотека для того, щоб створювати красивий UI для консольних додатків, написаних на Swift.
🇺🇦 iOSDevUA
💡Малювання графіки на Apple Vision за допомогою Metal Rendering API
Матеріалів по Apple Vision Pro дуже мало (а додатків трохи більше, але якщо ви щось робили, поділіться в коментарях, дуже цікаво).
Коли мова заходить про рендеринг, більшість розробників обирають вже відомі ігрові рушії, такі як Unity, або високорівневі API від Apple (перевіряйте RealityKit).
Однак є й інший варіант, який був доступний з самого початку: створення власного рушія рендерингу за допомогою Metal API.
Незважаючи на складність, такий підхід дозволяє отримати повний контроль над конвеєром рендерингу, аж до кожного байту.
Знайшов цікаву статтю (яку зберіг для майбутніх експериментів), в якій розглядається безліч цікавих моментів:
📖 Створення та налаштування LayerRenderer.
📖 Vertex Amplification (і опис прикладів з Vertex/Fragment шейдерами).
📖 Оновлення та енкодинг для кадрів.
📖 Підтримка стереоскопічного та не-VR рендерингу дисплею.
📖 Рекомендації та поради.
Якщо зараз це здається не дуже актуальним, то через кілька років, на мою думку, подібні пристрої будуть повсюдно використовуватися (наприклад, у медицині або для роботи з високотехнологічними процесами загалом, а навіть ремонтувати авто на просунутих сервісах з авто-підказками – чим не бізнес-ідея).
🇺🇦 iOSDevUA
Матеріалів по Apple Vision Pro дуже мало (а додатків трохи більше, але якщо ви щось робили, поділіться в коментарях, дуже цікаво).
Коли мова заходить про рендеринг, більшість розробників обирають вже відомі ігрові рушії, такі як Unity, або високорівневі API від Apple (перевіряйте RealityKit).
Однак є й інший варіант, який був доступний з самого початку: створення власного рушія рендерингу за допомогою Metal API.
Незважаючи на складність, такий підхід дозволяє отримати повний контроль над конвеєром рендерингу, аж до кожного байту.
Знайшов цікаву статтю (яку зберіг для майбутніх експериментів), в якій розглядається безліч цікавих моментів:
📖 Створення та налаштування LayerRenderer.
📖 Vertex Amplification (і опис прикладів з Vertex/Fragment шейдерами).
📖 Оновлення та енкодинг для кадрів.
📖 Підтримка стереоскопічного та не-VR рендерингу дисплею.
📖 Рекомендації та поради.
Якщо зараз це здається не дуже актуальним, то через кілька років, на мою думку, подібні пристрої будуть повсюдно використовуватися (наприклад, у медицині або для роботи з високотехнологічними процесами загалом, а навіть ремонтувати авто на просунутих сервісах з авто-підказками – чим не бізнес-ідея).
🇺🇦 iOSDevUA
💡Як почати використовувати Swift Testing
📖 У цій статті автор ділиться своїм поглядом на те, що потрібно знати для початку роботи з новим фреймворком Swift Testing.
Розглянуті основні можливості Swift Testing (а також його відмінності та покращення порівняно з XCTest).
📺 А ось тут цей матеріал представлений у форматі відео.
🇺🇦 iOSDevUA
📖 У цій статті автор ділиться своїм поглядом на те, що потрібно знати для початку роботи з новим фреймворком Swift Testing.
Розглянуті основні можливості Swift Testing (а також його відмінності та покращення порівняно з XCTest).
📺 А ось тут цей матеріал представлений у форматі відео.
🇺🇦 iOSDevUA
🧐 iPad як пристрій для розробки
Щороку знаходиться людина, яка розповідає, як iPad повністю замінив йому ноутбук для розробки iOS. Автор статті настільки сильно підтримує ідею, що це повноцінна заміна, що єдиною суттєвою проблемою називає неможливість знімання скріншотів для App Store.
🇺🇦 iOSDevUA
Щороку знаходиться людина, яка розповідає, як iPad повністю замінив йому ноутбук для розробки iOS. Автор статті настільки сильно підтримує ідею, що це повноцінна заміна, що єдиною суттєвою проблемою називає неможливість знімання скріншотів для App Store.
🇺🇦 iOSDevUA
mutatingfunc.github.io
App development on iPad
In the last year, I’ve gone all-in on building apps using an iPad. I’ve never met another Playgrounds developer, and a lot of the community are surprised this is even possible!
This post should clear up what is and isn’t possible when it comes to app development…
This post should clear up what is and isn’t possible when it comes to app development…
🤯1
Hello iOS developers! New iOS news digest is here!
TestFlight enhancements to help you reach testers:
Beta testing your apps, games, and App Clips is even better with new enhancements to TestFlight. Updates include:
- Redesigned invitations
- Tester enrollment criteria
- Public link metrics
https://developer.apple.com/news
Measuring Performance for iOS Apps at Uber Scale
At Uber, we obsess over delivering highly performant and reliable experiences to our partners and customers. We treat degradations to app performance the same way as any other functional regressions.
Before investing effort into improving performance and reliability, we need to understand how our app is performing in production. We use various tools to derive metrics that allow us to measure app performance and reliability. We also establish baselines to ensure that new feature development is consistent with the high bar we hold for performance and reliability:
https://www.uber.com/en-UA/blog/measuring-performance-for-ios-apps-at-uber-scale
How to use VSCode/Cursor for iOS development
If you are looking for something else than Xcode for iOS development consider using Cursor AI with VSCode for this. Here is a great article about integrating it:
https://dimillian.medium.com/how-to-use-cursor-for-ios-development-54b912c23941
Introducing ReactiveCollectionsKit
Jesse Squires, one of the creators of the IGListKit(Instagram library for displaying flexible list) released new open source project called ReactiveCollectionsKit. It is a modern, fast, and flexible library for building data-driven, declarative, reactive, and diffable collections and lists for iOS. This library is the culmination of everything learned from building and maintaining IGListKit, ReactiveLists, and JSQDataSourcesKit:
https://www.jessesquires.com/blog/2024/10/18/introducing-reactivecollectionskit
Making charts accessible with Swift Charts
Charts enable users to quickly interpret data, but charts are not inherently accessible for people who are blind or have low vision. Apple has made significant efforts to ensure the charts are compatible with Assistive Technologies, particularly VoiceOver.
With Swift Charts, VoiceOver can interpret the data displayed on the chart, extract valuable information, and construct audio graphs automatically, making it accessible to all users. With VoiceOver rotor particularly, users have three different options to access the data:
https://www.createwithswift.com/making-charts-accessible-with-swift-charts
How to Create Interactive TableView in SwiftUI
A Complete Guide to Sorting, Searching, Multi-Selection, and Expanding Rows with TableView in SwiftUI:
https://canopas.com/how-to-create-interactive-table-view-in-swiftui-68aad2f14811
How the Swift compiler knows that DispatchQueue.main implies @MainActor:
https://oleb.net/2024/dispatchqueue-mainactor
TestFlight enhancements to help you reach testers:
Beta testing your apps, games, and App Clips is even better with new enhancements to TestFlight. Updates include:
- Redesigned invitations
- Tester enrollment criteria
- Public link metrics
https://developer.apple.com/news
Measuring Performance for iOS Apps at Uber Scale
At Uber, we obsess over delivering highly performant and reliable experiences to our partners and customers. We treat degradations to app performance the same way as any other functional regressions.
Before investing effort into improving performance and reliability, we need to understand how our app is performing in production. We use various tools to derive metrics that allow us to measure app performance and reliability. We also establish baselines to ensure that new feature development is consistent with the high bar we hold for performance and reliability:
https://www.uber.com/en-UA/blog/measuring-performance-for-ios-apps-at-uber-scale
How to use VSCode/Cursor for iOS development
If you are looking for something else than Xcode for iOS development consider using Cursor AI with VSCode for this. Here is a great article about integrating it:
https://dimillian.medium.com/how-to-use-cursor-for-ios-development-54b912c23941
Introducing ReactiveCollectionsKit
Jesse Squires, one of the creators of the IGListKit(Instagram library for displaying flexible list) released new open source project called ReactiveCollectionsKit. It is a modern, fast, and flexible library for building data-driven, declarative, reactive, and diffable collections and lists for iOS. This library is the culmination of everything learned from building and maintaining IGListKit, ReactiveLists, and JSQDataSourcesKit:
https://www.jessesquires.com/blog/2024/10/18/introducing-reactivecollectionskit
Making charts accessible with Swift Charts
Charts enable users to quickly interpret data, but charts are not inherently accessible for people who are blind or have low vision. Apple has made significant efforts to ensure the charts are compatible with Assistive Technologies, particularly VoiceOver.
With Swift Charts, VoiceOver can interpret the data displayed on the chart, extract valuable information, and construct audio graphs automatically, making it accessible to all users. With VoiceOver rotor particularly, users have three different options to access the data:
https://www.createwithswift.com/making-charts-accessible-with-swift-charts
How to Create Interactive TableView in SwiftUI
A Complete Guide to Sorting, Searching, Multi-Selection, and Expanding Rows with TableView in SwiftUI:
https://canopas.com/how-to-create-interactive-table-view-in-swiftui-68aad2f14811
How the Swift compiler knows that DispatchQueue.main implies @MainActor:
https://oleb.net/2024/dispatchqueue-mainactor
Apple
Latest News - Apple Developer
Learn about the latest technologies, events, and policies for developers.
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Як створювати привабливі анімації
Люди все частіше обирають інструменти, орієнтуючись на загальні враження, а не тільки на функціональність.
Додаток, який робить те, що ви очікуєте і так, як ви хотіли б бачити — ось що виділяє продукт.
Зокрема, це одна з основних причин, чому компанії інвестують у дизайн-інженерів.
Вміння створювати приємні анімації — складна задача (для якої потрібен досвід і знання).
📖 Еміль Ковальські розповідає про такі анімації, приводить приклади (не тільки для iOS-платформи) і дає поради, як можна покращити враження користувачів.
🇺🇦 iOSDevUA
Люди все частіше обирають інструменти, орієнтуючись на загальні враження, а не тільки на функціональність.
Додаток, який робить те, що ви очікуєте і так, як ви хотіли б бачити — ось що виділяє продукт.
Зокрема, це одна з основних причин, чому компанії інвестують у дизайн-інженерів.
Вміння створювати приємні анімації — складна задача (для якої потрібен досвід і знання).
📖 Еміль Ковальські розповідає про такі анімації, приводить приклади (не тільки для iOS-платформи) і дає поради, як можна покращити враження користувачів.
🇺🇦 iOSDevUA
❤2🔥1
💡gRPC сервер на Swift
У цьому році з’явилося особливо багато якісного контенту про Swift на сервері. Наприклад, туторіал про те, як зібрати простий gRPC сервер з використанням бібліотеки grpc-swift-protobuf.
🇺🇦 iOSDevUA
У цьому році з’явилося особливо багато якісного контенту про Swift на сервері. Наприклад, туторіал про те, як зібрати простий gRPC сервер з використанням бібліотеки grpc-swift-protobuf.
🇺🇦 iOSDevUA
Swiftonserver
Beginner's Guide to Protocol Buffers and gRPC with Swift - Swift on server
Learn Protocol Buffers and gRPC with Swift in this easy, step-by-step beginner's guide.
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Анімація переходів між view у SwiftUI
Transitions (або переходи) покращують користувацький досвід, роблячи взаємодію більш плавною та приємною.
При зміні інтерфейсу візуально підкреслюється зв’язок між різними елементами користувацького інтерфейсу.
Як приклади, де використовуються такі анімації, можна навести:
🔘 Навігація між екранами.
🔘 Додавання (або видалення) елементів зі списку.
🔘 Показ модальних view.
📖 Розбір створення таких ефектів (і їх комбінацій) можна прочитати в цій статті.
🇺🇦 iOSDevUA
Transitions (або переходи) покращують користувацький досвід, роблячи взаємодію більш плавною та приємною.
При зміні інтерфейсу візуально підкреслюється зв’язок між різними елементами користувацького інтерфейсу.
Як приклади, де використовуються такі анімації, можна навести:
🔘 Навігація між екранами.
🔘 Додавання (або видалення) елементів зі списку.
🔘 Показ модальних view.
📖 Розбір створення таких ефектів (і їх комбінацій) можна прочитати в цій статті.
🇺🇦 iOSDevUA
❤1
Захотілося трохи повернутися до основ і поділитися матеріалом про таку важливу річ, як Copy on Write. Так, це зовсім для початківців, але якщо і ви раптом про це знаєте не так багато, то переходьте і ознайомлюйтесь. А поділитися цим хотілося, тому що для початківців ця інформація дуже важлива і корисна 👍
👉 https://holyswift.app/copy-on-write-in-swift/
🇺🇦 iOSDevUA
👉 https://holyswift.app/copy-on-write-in-swift/
🇺🇦 iOSDevUA
Holy Swift
Copy-on-write in Swift - Holy Swift
This is a tutorial on Copy-on-write in Swift. Learn everything about copy-on-write and why it is important for your code in Swift!
👍3❤1
💡Стаття про те, як прискорити мережеву взаємодію
Не знаю, чи підійде вам такий спосіб, але хоча б знати про нього буде корисно. Взагалі знати про все буде корисно, не обов’язково навіть у деталях, але хоча б знати, в яку сторону шукати і що гуглити, якщо у вас з’явиться задача з цієї області.
👉 https://eisel.me/shared-dictionary-compression
🇺🇦 iOSDevUA
Не знаю, чи підійде вам такий спосіб, але хоча б знати про нього буде корисно. Взагалі знати про все буде корисно, не обов’язково навіть у деталях, але хоча б знати, в яку сторону шукати і що гуглити, якщо у вас з’явиться задача з цієї області.
👉 https://eisel.me/shared-dictionary-compression
🇺🇦 iOSDevUA
Michael Eisel’s Blog
Faster iOS Networking with Shared Dictionary Compression
Introduction
❤2
💡Комплексний гайд по роботі з KeyPath у Swift
У світі Swift KeyPath – це потужна, але часто недооцінена функція.
Мета цієї статті – глибоко вивчити функціональні особливості KeyPath, розкрити можливості та допомогти використовувати її в процесі розробки.
📖 У матеріалі описані властивості, наведені приклади, як читати/встановлювати значення через KeyPath та використовувати KeyPath як параметр.
🇺🇦 iOSDevUA
У світі Swift KeyPath – це потужна, але часто недооцінена функція.
Мета цієї статті – глибоко вивчити функціональні особливості KeyPath, розкрити можливості та допомогти використовувати її в процесі розробки.
📖 У матеріалі описані властивості, наведені приклади, як читати/встановлювати значення через KeyPath та використовувати KeyPath як параметр.
🇺🇦 iOSDevUA
❤1
💡Робота з таймерами у Swift
Таймери у Swift використовуються постійно: для планування відкладених або повторюваних завдань.
У статті, яка торкається моментів створення та роботи з таймерами, автор нагадує кілька важливих моментів:
🔘 Навіщо взагалі потрібні таймери у Swift.
🔘 Повторювані (і не повторювані) таймери.
🔘 Як запланувати повторювані завдання.
🔘 Що таке tolerance і як runloop modes впливають на роботу таймера.
🇺🇦 iOSDevUA
Таймери у Swift використовуються постійно: для планування відкладених або повторюваних завдань.
У статті, яка торкається моментів створення та роботи з таймерами, автор нагадує кілька важливих моментів:
🔘 Навіщо взагалі потрібні таймери у Swift.
🔘 Повторювані (і не повторювані) таймери.
🔘 Як запланувати повторювані завдання.
🔘 Що таке tolerance і як runloop modes впливають на роботу таймера.
🇺🇦 iOSDevUA
❤1👍1
💡Про Vapor та тести у Swift
👉 https://www.avanderlee.com/general/vapor-and-swift-testing-running-tests-in-parallel/
🇺🇦 iOSDevUA
👉 https://www.avanderlee.com/general/vapor-and-swift-testing-running-tests-in-parallel/
🇺🇦 iOSDevUA
SwiftLee
Vapor and Swift Testing: Running tests in parallel
Improve your backend development with Swift Testing and Vapor. Learn about running tests in parallel and boosting performance.
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Реалізація розмиття екрану в режимі багатозадачності
🔑 Підвищення рівня конфіденційності важливо при розробці сучасних додатків (особливо месенджерів або банківських додатків).
📖 У цій статті показано простий спосіб розмиття контенту, коли користувач переходить у багатозадачний (або фоновий) режим.
🇺🇦 iOSDevUA
🔑 Підвищення рівня конфіденційності важливо при розробці сучасних додатків (особливо месенджерів або банківських додатків).
📖 У цій статті показано простий спосіб розмиття контенту, коли користувач переходить у багатозадачний (або фоновий) режим.
🇺🇦 iOSDevUA
💡Продовжуючи тему тестування в Swift. Про макрос
З прикладами та поясненням.
👉 https://www.avanderlee.com/swift-testing/require-macro/
🇺🇦 iOSDevUA
require.З прикладами та поясненням.
👉 https://www.avanderlee.com/swift-testing/require-macro/
🇺🇦 iOSDevUA
SwiftLee
Using the #require macro for Swift Testing
Discover how #require macro in Swift Testing can set requirements for your tests and make them clearer and easier to understand.
This media is not supported in your browser
VIEW IN TELEGRAM
💡Як заборонити створення скріншотів для важливих екранів у Swift
Для цього підійде елегантне рішення з використанням властивості
📖 У цій статті автор ділиться необхідними кроками з прикладом коду.
😎 До речі, цей спосіб актуальний і для запису відео з екрана пристрою.
🇺🇦 iOSDevUA
Для цього підійде елегантне рішення з використанням властивості
isSecureTextEntry за допомогою кастомного модифікатора.📖 У цій статті автор ділиться необхідними кроками з прикладом коду.
😎 До речі, цей спосіб актуальний і для запису відео з екрана пристрою.
🇺🇦 iOSDevUA