💡Дуже корисний та інформативний матеріал про анімації в SwiftUI від автора, який колись давно розповів нам всю базу Objective-C.
Текстовий опис швидше нагадує контент-план, але варто дивитися відео, якщо тема вам цікава. Там є і приклади коду, і результат, і пояснення.
👉 https://chris.eidhof.nl/presentations/swiftui-animations/
🇺🇦 iOSDevUA
Текстовий опис швидше нагадує контент-план, але варто дивитися відео, якщо тема вам цікава. Там є і приклади коду, і результат, і пояснення.
👉 https://chris.eidhof.nl/presentations/swiftui-animations/
🇺🇦 iOSDevUA
💡Traits у Swift Testing
Traits – різні атрибути тестів, які можна налаштовувати через спеціальний макрос. Наприклад, автоматичне вимкнення тесту залежно від оточення, асоціація його з конкретним багом у вашому трекері або обмеження на час його виконання.
🇺🇦 iOSDevUA
Traits – різні атрибути тестів, які можна налаштовувати через спеціальний макрос. Наприклад, автоматичне вимкнення тесту залежно від оточення, асоціація його з конкретним багом у вашому трекері або обмеження на час його виконання.
🇺🇦 iOSDevUA
SwiftLee
Using Traits to annotate and customize test behavior
Customize and annotate tests with traits in the Swift Testing framework. Learn how to configure behaviors and skip certain tests.
💡Приклад кросплатформного додатку для macOS та Windows. Написано на Swift 6!
👉 https://forums.swift.org/t/example-of-a-cross-platform-macos-windows-application-developed-using-swift-6/74591
🇺🇦 iOSDevUA
👉 https://forums.swift.org/t/example-of-a-cross-platform-macos-windows-application-developed-using-swift-6/74591
🇺🇦 iOSDevUA
Swift Forums
Example of a Cross-Platform macOS/Windows Application Developed Using Swift 6
Hey there, This is the source code and documentation for a cross-platform macOS/Windows application implemented in Swift 6. It’s an LLM client. I’ve been playing with it for some time in my spare time and I’m happy to share it publicly now! https://git…
💡Коротенький матеріал про expect macro для тестування у Swift.
Замінник частини функціональності старих XCAssertEqual та XCAssertTrue.
Використовується ось так:
Докладніше – у самому матеріалі!
👉 https://www.avanderlee.com/swift-testing/expect-macro/
🇺🇦 iOSDevUA
Замінник частини функціональності старих XCAssertEqual та XCAssertTrue.
Використовується ось так:
#expect(someBoolean == true)
Докладніше – у самому матеріалі!
👉 https://www.avanderlee.com/swift-testing/expect-macro/
🇺🇦 iOSDevUA
SwiftLee
Using the #expect macro for Swift Testing
Improve your testing workflow with the #expect macro in Swift Testing. Simplify your assertions and debug tests with ease.
Hello iOS developers! New iOS news digest is here!
Are Android apps THAT much smaller than iOS?
Emerge Tools who are creators of a suite of developer tools designed to supercharge mobile apps and the teams that build them released great article analyzing why iOS application are so heavy weight
"People ask why an app is large on Twitter and we at Emerge break it down. It's kind of become our bat signal":
https://www.emergetools.com/blog/posts/are-android-apps-really-that-much-smaller-than-ios
Navigation Patterns in SwiftUI
Super detailed article from Mohammad Azam about navigation in SwiftUI:
https://azamsharp.com/2024/07/29/navigation-patterns-in-swiftui.html
Migrating Combine to AsyncAlgorithms
Future-proof your pipeline operations
If you are looking for an example of migrating Combine to AsyncAlgorithms please check this great detailed article from Jacob Bartlett:
https://blog.jacobstechtavern.com/p/migrating-combine-to-asyncalgorithms
How to keep Date’s microseconds precision in Swift
DateFormatter is used for converting string representation of date and time to a Date type and visa-versa. Something to be aware of is that the conversion loses microseconds precision. This is extremely important if we use these Date values for sorting and therefore ending up with incorrect order:
https://augmentedcode.io/2024/09/23/how-to-keep-dates-microseconds-precision-in-swift
Security-scoped bookmarks for URL access
Security-scoped bookmarks allow you to store access to a given user-selected URL. They are commonly used on macOS to store access information for a user-selected directory. Restoring the security-scoped bookmark data allows you to regain access to a folder previously selected by the user:
https://www.avanderlee.com/swift/security-scoped-bookmarks-for-url-access
React at Meta Connect 2024
At a recent event, Meta announced:
- New Instagram and Facebook mixed-reality apps for the Meta Quest headset
- A new Meta Horizon RN app that performs on par with their main native Facebook app
- Meta Horizon Store for web/mobile/HorizonOS
- Meta Spatial Editor built on top of React Native Windows/macOS enables them to integrate natively their custom 3D rendering engine
https://engineering.fb.com/2024/10/02/android/react-at-meta-connect-2024
How to build a Safari extension with SwiftUI
https://www.polpiella.dev/safari-extensions-swiftui
Are Android apps THAT much smaller than iOS?
Emerge Tools who are creators of a suite of developer tools designed to supercharge mobile apps and the teams that build them released great article analyzing why iOS application are so heavy weight
"People ask why an app is large on Twitter and we at Emerge break it down. It's kind of become our bat signal":
https://www.emergetools.com/blog/posts/are-android-apps-really-that-much-smaller-than-ios
Navigation Patterns in SwiftUI
Super detailed article from Mohammad Azam about navigation in SwiftUI:
https://azamsharp.com/2024/07/29/navigation-patterns-in-swiftui.html
Migrating Combine to AsyncAlgorithms
Future-proof your pipeline operations
If you are looking for an example of migrating Combine to AsyncAlgorithms please check this great detailed article from Jacob Bartlett:
https://blog.jacobstechtavern.com/p/migrating-combine-to-asyncalgorithms
How to keep Date’s microseconds precision in Swift
DateFormatter is used for converting string representation of date and time to a Date type and visa-versa. Something to be aware of is that the conversion loses microseconds precision. This is extremely important if we use these Date values for sorting and therefore ending up with incorrect order:
https://augmentedcode.io/2024/09/23/how-to-keep-dates-microseconds-precision-in-swift
Security-scoped bookmarks for URL access
Security-scoped bookmarks allow you to store access to a given user-selected URL. They are commonly used on macOS to store access information for a user-selected directory. Restoring the security-scoped bookmark data allows you to regain access to a folder previously selected by the user:
https://www.avanderlee.com/swift/security-scoped-bookmarks-for-url-access
React at Meta Connect 2024
At a recent event, Meta announced:
- New Instagram and Facebook mixed-reality apps for the Meta Quest headset
- A new Meta Horizon RN app that performs on par with their main native Facebook app
- Meta Horizon Store for web/mobile/HorizonOS
- Meta Spatial Editor built on top of React Native Windows/macOS enables them to integrate natively their custom 3D rendering engine
https://engineering.fb.com/2024/10/02/android/react-at-meta-connect-2024
How to build a Safari extension with SwiftUI
https://www.polpiella.dev/safari-extensions-swiftui
Emergetools
Emerge Tools Blog | Are Android apps THAT much smaller than iOS?
An in-depth analysis of Android vs. iOS app sizes and why Android apps might be larger than they appear
👍1
💡Swift Container Plugin
Плагін для SwiftPM, за допомогою якого можна збирати контейнери з вашими серверними додатками та публікувати їх у потрібні хмари. Доповідь з деталями можна переглянути тут.
🇺🇦 iOSDevUA
Плагін для SwiftPM, за допомогою якого можна збирати контейнери з вашими серверними додатками та публікувати їх у потрібні хмари. Доповідь з деталями можна переглянути тут.
🇺🇦 iOSDevUA
💡Як заборонити видаляти ваш додаток
Виявляється, в iOS є офіційний API, за допомогою якого можна заборонити видаляти ваш додаток. Він входить до Screen Time API. Але є два нюанси. По-перше, потрібно отримати спеціальний апрув від Apple, по-друге, користувач також повинен дати явну згоду на цей забор.
🇺🇦 iOSDevUA
Виявляється, в iOS є офіційний API, за допомогою якого можна заборонити видаляти ваш додаток. Він входить до Screen Time API. Але є два нюанси. По-перше, потрібно отримати спеціальний апрув від Apple, по-друге, користувач також повинен дати явну згоду на цей забор.
🇺🇦 iOSDevUA
tiny coder
Preventing app removal on iOS - tiny coder
[You can still remove the app from Home Screen, but it is not uninstalled.]These days, I am developing an alarm app called ‘SuperAlarm’. To ensure a user is awake, SuperAlarm can...
💡Як працювати з MeshGradient у iOS 18
У iOS 18 з’явилася можливість створювати mesh-градієнти.
Загалом, це легкий у використанні спосіб створення незвичайних ефектів.
У цьому пості досить детально описано, що таке mesh-градієнти, як їх можна використовувати та анімувати, щоб вони виглядали дійсно приємно.
🇺🇦 iOSDevUA
У iOS 18 з’явилася можливість створювати mesh-градієнти.
Загалом, це легкий у використанні спосіб створення незвичайних ефектів.
У цьому пості досить детально описано, що таке mesh-градієнти, як їх можна використовувати та анімувати, щоб вони виглядали дійсно приємно.
🇺🇦 iOSDevUA
👍2🔥2
💡Стаття про те, чим поганий UserDefaults
Заголовок трохи кричущий, звісно, а ще в кінці автор «продає» свою кастомну бібліотеку, але це вам вирішувати, пропускати цю частину чи ні. А в решті цікавими речами про UserDefaults пише. Може бути корисно 👍
👉 https://christianselig.com/2024/10/beware-userdefaults/
🇺🇦 iOSDevUA
Заголовок трохи кричущий, звісно, а ще в кінці автор «продає» свою кастомну бібліотеку, але це вам вирішувати, пропускати цю частину чи ні. А в решті цікавими речами про UserDefaults пише. Може бути корисно 👍
👉 https://christianselig.com/2024/10/beware-userdefaults/
🇺🇦 iOSDevUA
Christianselig
Beware UserDefaults: a tale of hard to find bugs, and lost data
Excuse the alarmist title, but I think it’s justified, as it’s an issue that’s caused me a ton of pain in both support emails and actually tracking it down, so I want to make others aware of it so they don’t similarly burned.
Brief intro
For the uninitiated…
Brief intro
For the uninitiated…
💡SafariExtension на SwiftUI
Якби мене одразу спитали, на чому розробляються розширення для Safari, я б був впевнений, що це JavaScript. Виявляється, їх можна писати нативно на SwiftUI!
🇺🇦 iOSDevUA
Якби мене одразу спитали, на чому розробляються розширення для Safari, я б був впевнений, що це JavaScript. Виявляється, їх можна писати нативно на SwiftUI!
🇺🇦 iOSDevUA
www.polpiella.dev
How to build a Safari extension with SwiftUI
Learn how to create a Safari Extension as a popover using only Swift and how to render its UI using SwiftUI.
😱3
💡Реалізація завантажувача файлів у SwiftUI
Цілком ймовірно, що вам доводилося вирішувати завдання відстеження прогресу завантаження кількох файлів.
📖 Маттео Манфердіни у своєму блозі написав величезний матеріал про свій підхід до створення завантажувача файлів.
Стаття розбита на кілька частин:
1️⃣ Завантаження файлів та як відстежувати прогрес завантаження.
2️⃣ Реалізація архітектури для завантаження кількох файлів.
3️⃣ Відстежуємо прогрес за допомогою Swift Concurrency.
4️⃣ Створення інтерфейсу SwiftUI для управління завантаженням.
🛠 Код проєкту доступний на GitHub.
🇺🇦 iOSDevUA
Цілком ймовірно, що вам доводилося вирішувати завдання відстеження прогресу завантаження кількох файлів.
📖 Маттео Манфердіни у своєму блозі написав величезний матеріал про свій підхід до створення завантажувача файлів.
Стаття розбита на кілька частин:
1️⃣ Завантаження файлів та як відстежувати прогрес завантаження.
2️⃣ Реалізація архітектури для завантаження кількох файлів.
3️⃣ Відстежуємо прогрес за допомогою Swift Concurrency.
4️⃣ Створення інтерфейсу SwiftUI для управління завантаженням.
🛠 Код проєкту доступний на GitHub.
🇺🇦 iOSDevUA
🔥1
💡Огляд недавньої Server-Side Swift конференції
Нещодавно відбулася перша велика конференція, присвячена Swift на сервері. Саме на ній анонсували інтероп з Java та такі речі, як плагін для контейнеризації, про які я вже розповідав на каналі.
Тримайте статтю з коротким змістом усіх доповідей, щоб ви могли самі вирішити, на що ще звернути увагу. Я все ще дивуюся, що Things, мій улюблений туду лист, досить давно перейшов на Swift і, здається, задоволені.
🇺🇦 iOSDevUA
Нещодавно відбулася перша велика конференція, присвячена Swift на сервері. Саме на ній анонсували інтероп з Java та такі речі, як плагін для контейнеризації, про які я вже розповідав на каналі.
Тримайте статтю з коротким змістом усіх доповідей, щоб ви могли самі вирішити, на що ще звернути увагу. Я все ще дивуюся, що Things, мій улюблений туду лист, досить давно перейшов на Swift і, здається, задоволені.
🇺🇦 iOSDevUA
💡Чи знаєте ви, що таке security-scoped bookmarks?
Я навіть не можу це перекласти українською мовою, тому якщо ви не знаєте, ось невелика стаття. Почитайте, можливо, коли дізнаєтеся, зрозумієте, що це вам потрібно в одному з ваших проектів, наприклад.
👉 https://www.avanderlee.com/swift/security-scoped-bookmarks-for-url-access/
🇺🇦 iOSDevUA
Я навіть не можу це перекласти українською мовою, тому якщо ви не знаєте, ось невелика стаття. Почитайте, можливо, коли дізнаєтеся, зрозумієте, що це вам потрібно в одному з ваших проектів, наприклад.
👉 https://www.avanderlee.com/swift/security-scoped-bookmarks-for-url-access/
🇺🇦 iOSDevUA
SwiftLee
Security-scoped bookmarks for URL access
Find out how security-scoped bookmarks on macOS can help regain access to user-selected directories and enhance data management.
💡Як зберігати мікросекунди при конвертації Date <-> String
Невелике нагадування – при конвертації string в дату і назад за допомогою DateFormatter інформація про мікросекунди втрачається. Якщо для вас вони важливі, то в статті розглядається, як зберегти їх значення.
🇺🇦 iOSDevUA
Невелике нагадування – при конвертації string в дату і назад за допомогою DateFormatter інформація про мікросекунди втрачається. Якщо для вас вони важливі, то в статті розглядається, як зберегти їх значення.
🇺🇦 iOSDevUA
Augmented Code
How to keep Date’s microseconds precision in Swift
DateFormatter is used for converting string representation of date and time to a Date type and visa-versa. Something to be aware of is that the conversion loses microseconds precision. This is extr…
💡Епізод Swift Talk про Concurrency
Хлопці з Objc.io випустили безкоштовний епізод свого відеоблогу про Swift Concurrency, де на прикладі невеликого macOS додатку розбираються з основними функціями та помилками компіляції.
🇺🇦 iOSDevUA
Хлопці з Objc.io випустили безкоштовний епізод свого відеоблогу про Swift Concurrency, де на прикладі невеликого macOS додатку розбираються з основними функціями та помилками компіляції.
🇺🇦 iOSDevUA
talk.objc.io
Swift 6 Concurrency (Part 1)
We start a new macOS project to explore Swift 6's concurrency features.
💡У Apple вийшла серія туторіалів по Instruments про баги з потоками та як їх дебажити
Використовуйте Instruments для аналізу performance, використання ресурсів та поведінки ваших додатків. Дізнайтеся, як покращити відгук, зменшити використання пам’яті та аналізувати складну поведінку з часом.
👉 https://developer.apple.com/tutorials/instruments
🇺🇦 iOSDevUA
Використовуйте Instruments для аналізу performance, використання ресурсів та поведінки ваших додатків. Дізнайтеся, як покращити відгук, зменшити використання пам’яті та аналізувати складну поведінку з часом.
👉 https://developer.apple.com/tutorials/instruments
🇺🇦 iOSDevUA
💡Підбірка доповідей з iOS Conf SG 2024
📺 Understanding our users – корисне відео, в якому розбираються основи того, що питати у користувачів, щоб розвивати продукт у потрібному напрямку.
📺 Swift beyond Apple platforms — про можливості та проблеми використання Swift від веб-розробки до роботи в embedded-системах.
📺 The Swift Actor Pitfall: Understanding and Managing Reentrancy – розбір неочевидної та простої помилки, пов’язаної зі Swift Concurrency.
Не можна пройти повз і міграцію кодової бази на async/await.
🔗 А весь плейліст з доповідями доступний ось тут.
🇺🇦 iOSDevUA
📺 Understanding our users – корисне відео, в якому розбираються основи того, що питати у користувачів, щоб розвивати продукт у потрібному напрямку.
📺 Swift beyond Apple platforms — про можливості та проблеми використання Swift від веб-розробки до роботи в embedded-системах.
📺 The Swift Actor Pitfall: Understanding and Managing Reentrancy – розбір неочевидної та простої помилки, пов’язаної зі Swift Concurrency.
Не можна пройти повз і міграцію кодової бази на async/await.
🔗 А весь плейліст з доповідями доступний ось тут.
🇺🇦 iOSDevUA
💡Як працювати зі Swift Data та Core Data у фоновому режимі
Хоча SwiftData набагато простіше в налаштуванні, фреймворк успадкував багато проблем Core Data (включаючи ті, які стримували багатьох розробників від використання Core Data у своїх додатках).
Одна з найбільших проблем — управління моделями у різних контекстах. Моделі Swift Data та Core Data небезпечно використовувати разом у різних потоках (вони не є Sendable і не thread-safe). Apple навіть вказує на це у своєму керівництві (посилання).
📖 Пол у своєму блозі розглядає цю проблему з різних боків та пропонує свій варіант рішення з використанням одного контейнера та виконання всієї необхідної роботи у бекграунді.
🇺🇦 iOSDevUA
Хоча SwiftData набагато простіше в налаштуванні, фреймворк успадкував багато проблем Core Data (включаючи ті, які стримували багатьох розробників від використання Core Data у своїх додатках).
Одна з найбільших проблем — управління моделями у різних контекстах. Моделі Swift Data та Core Data небезпечно використовувати разом у різних потоках (вони не є Sendable і не thread-safe). Apple навіть вказує на це у своєму керівництві (посилання).
📖 Пол у своєму блозі розглядає цю проблему з різних боків та пропонує свій варіант рішення з використанням одного контейнера та виконання всієї необхідної роботи у бекграунді.
🇺🇦 iOSDevUA
💡Нові статті в документації Apple
Тримайте пачку жовтневих оновлень документації Apple:
👉 Win-back offers – спеціальний тип підписок, спрямований на повернення користувачів, які від вас пішли
👉 Camera Control: HIG та документація
👉 Гайд по підтримці різних розмірів годинників
👉 Нові семпли для visionOS
🇺🇦 iOSDevUA
Тримайте пачку жовтневих оновлень документації Apple:
👉 Win-back offers – спеціальний тип підписок, спрямований на повернення користувачів, які від вас пішли
👉 Camera Control: HIG та документація
👉 Гайд по підтримці різних розмірів годинників
👉 Нові семпли для visionOS
🇺🇦 iOSDevUA
👍1
💡Genesis – новий генератор статичних сайтів на Swift
Генератор статичних сайтів – один із найпростіших способів створити той самий блог, про який ви давно мріяли. А якщо цей генератор написаний на Swift, ви ще можете погратися з незвичайним застосуванням улюбленої мови.
Genesis – ще один такий генератор. Від альтернатив його відрізняє максимально проста реалізація, відсутність якихось зовнішніх залежностей та робота зі рядками замість складних DSL.
🇺🇦 iOSDevUA
Генератор статичних сайтів – один із найпростіших способів створити той самий блог, про який ви давно мріяли. А якщо цей генератор написаний на Swift, ви ще можете погратися з незвичайним застосуванням улюбленої мови.
Genesis – ще один такий генератор. Від альтернатив його відрізняє максимально проста реалізація, відсутність якихось зовнішніх залежностей та робота зі рядками замість складних DSL.
🇺🇦 iOSDevUA
Alejandro M. P.
Back to the basics with Genesis | Alejandro M. P.
Recently, I finished an almost final draft of my novel and decided it was time to refresh my online presence and website. Instead of starting my next novel, I dove into creating the next version of my site, what I call alejandromp4. And, of course, you know…
Сергій, iOS розробник, ділиться своїм досвідом оптимізації обробки відео в додатку для соціальних мереж.
Він пояснює використання AVFoundation, асинхронне завантаження ресурсів, а також впровадження AsyncDisplayKit для покращення продуктивності при роботі з UICollectionView.
👉 https://dou.ua/forums/topic/50877/
🇺🇦 iOSDevUA
Він пояснює використання AVFoundation, асинхронне завантаження ресурсів, а також впровадження AsyncDisplayKit для покращення продуктивності при роботі з UICollectionView.
👉 https://dou.ua/forums/topic/50877/
🇺🇦 iOSDevUA
👍4🔥2❤1