💡SwiftTUI – SwiftUI для консольних додатків
Будь-який UI фреймворк рано чи пізно використовують для того, щоб писати додатки під термінал. SwiftTUI – бібліотека, яка реалізує аналогічний SwiftUI API для додатків з чисто текстовим інтерфейсом.
Що вже працює:
👉 Property wrappers @State, @Binding, @Environment
👉 VStack, HStack, ForEach, Group та @ViewBuilder
👉 Structural identity як у SwiftUI
👉 Button, TextField та зміна фокусу стрілками
👉 Text, Color, Spacer
👉 .border(), .padding(), .background(), .foregroundColor()
🔗 Приклад зі ToDo списком
🇺🇦 iOSDevUA
Будь-який UI фреймворк рано чи пізно використовують для того, щоб писати додатки під термінал. SwiftTUI – бібліотека, яка реалізує аналогічний SwiftUI API для додатків з чисто текстовим інтерфейсом.
Що вже працює:
👉 Property wrappers @State, @Binding, @Environment
👉 VStack, HStack, ForEach, Group та @ViewBuilder
👉 Structural identity як у SwiftUI
👉 Button, TextField та зміна фокусу стрілками
👉 Text, Color, Spacer
👉 .border(), .padding(), .background(), .foregroundColor()
🔗 Приклад зі ToDo списком
🇺🇦 iOSDevUA
👍1
💡Як покращити неймінг компонентів SwiftUI
Проста ідея щодо того, як зменшити кількість класів на кшталт
👉 https://blog.ptrkstr.com/swiftui-component-naming
🇺🇦 iOSDevUA
Проста ідея щодо того, як зменшити кількість класів на кшталт
BlablablaDescriptionView у вашому коді – замість View використовувати клас обгортаного елемента.👉 https://blog.ptrkstr.com/swiftui-component-naming
🇺🇦 iOSDevUA
💡Черговий хороший навчальний матеріал з прикладами.
Цього разу про
Автор сам каже, що хоч протокол і здається простим та зрозумілим, є кілька випадків, у яких ви можете зіткнутися з багом. Показує та пояснює детально 👍
👉 https://www.avanderlee.com/swiftui/identifiable-protocol-object-identifier/
🇺🇦 iOSDevUA
Цього разу про
Identifiable протокол у SwiftUI!Автор сам каже, що хоч протокол і здається простим та зрозумілим, є кілька випадків, у яких ви можете зіткнутися з багом. Показує та пояснює детально 👍
👉 https://www.avanderlee.com/swiftui/identifiable-protocol-object-identifier/
🇺🇦 iOSDevUA
SwiftLee
Identifiable protocol in SwiftUI explained with code examples
The Identifiable protocol adds identity to your objects and comes with a default implementation using ObjectIdentifier for classes.
💡Benchmark – новий пакет для вимірювань продуктивності
Swift у своєму блозі виклали статтю про Benchmark, пакет для автоматизації тестування продуктивності, який вміє працювати з безліччю різних метрик.
🔗 GitHub
🇺🇦 iOSDevUA
Swift у своєму блозі виклали статтю про Benchmark, пакет для автоматизації тестування продуктивності, який вміє працювати з безліччю різних метрик.
🔗 GitHub
🇺🇦 iOSDevUA
💡Оновлення SwiftUI Field Guide
За місяць, що минув з першого релізу, новий проєкт Кріса Ейдгофа, інтерактивний підручник The SwiftUI Field Guide, продовжує активно оновлюватися. Ось які розділи там з'явились:
👉 Safe Areas
👉 Debugging Techniques
👉 Introduction to SwiftUI
👉 Alignment
👉 Flow Layout
👉 Stack Alignment
🇺🇦 iOSDevUA
За місяць, що минув з першого релізу, новий проєкт Кріса Ейдгофа, інтерактивний підручник The SwiftUI Field Guide, продовжує активно оновлюватися. Ось які розділи там з'явились:
👉 Safe Areas
👉 Debugging Techniques
👉 Introduction to SwiftUI
👉 Alignment
👉 Flow Layout
👉 Stack Alignment
🇺🇦 iOSDevUA
💡DevToys – набір утиліт для розробки
DevToys – опенсорсний додаток, що складається з купи невеликих хелперів, які спрощують щоденну розробницьку рутину. Ось деякі з них:
👉 Конвертер з JSON у Yaml
👉 URL encoder/decoder
👉 JSON форматер
👉 Тестер регулярок
👉 Генератор хешів
🇺🇦 iOSDevUA
DevToys – опенсорсний додаток, що складається з купи невеликих хелперів, які спрощують щоденну розробницьку рутину. Ось деякі з них:
👉 Конвертер з JSON у Yaml
👉 URL encoder/decoder
👉 JSON форматер
👉 Тестер регулярок
👉 Генератор хешів
🇺🇦 iOSDevUA
💡Погруження в макроси Swift
Макроси Swift вперше були представлені на WWDC 23, і хоча це не нова концепція в програмуванні загалом, вона принесла корисні опції для розробників Swift.
Вони дозволяють налаштовувати мову Swift відповідно до наших потреб і поширювати їх серед інших розробників без зміни коду компілятора.
📖 У цьому розборі показані принципи роботи макросів, а також налаштування і використання на простому прикладі.
🇺🇦 iOSDevUA
Макроси Swift вперше були представлені на WWDC 23, і хоча це не нова концепція в програмуванні загалом, вона принесла корисні опції для розробників Swift.
Вони дозволяють налаштовувати мову Swift відповідно до наших потреб і поширювати їх серед інших розробників без зміни коду компілятора.
📖 У цьому розборі показані принципи роботи макросів, а також налаштування і використання на простому прикладі.
🇺🇦 iOSDevUA
🇺🇦 iOS Dev UA - спільнота iOS розробників
💪 Генератор для Privacy Manifest Нещодавно практично кожен додаток повинен включати спеціальний маніфест, у якому вказується, які типи даних він збирає і для чого використовує різні неблагополучні фреймворки та API. Отже, продовжуємо тиждень корисних інструментів…
💡Гайд для Privacy Manifest від інженерів Apple
Продовжуємо актуальну тему Privacy Manifest. Відео гайд від Apple як його створити, а також опис всіх API reasons.
🇺🇦 iOSDevUA
Продовжуємо актуальну тему Privacy Manifest. Відео гайд від Apple як його створити, а також опис всіх API reasons.
🇺🇦 iOSDevUA
Apple Developer
Get started with privacy manifests - WWDC23 - Videos - Apple Developer
Meet privacy manifests: a new tool that helps you accurately identify the privacy practices of your app's dependencies. Find out how...
👍1🔥1
💡Вступ до Swift для розробників C++
Якщо у вас є друзі, які займаються розробкою на C++, і ви хочете познайомити їх зі своєю улюбленою мовою – ось ідеальний гайд, який проводить аналогії між ментальною моделлю плюсів та Swift і пояснює всю неочевидну магію.
👉 https://www.douggregor.net/posts/swift-for-cxx-practitioners-value-types/
🇺🇦 iOSDevUA
Якщо у вас є друзі, які займаються розробкою на C++, і ви хочете познайомити їх зі своєю улюбленою мовою – ось ідеальний гайд, який проводить аналогії між ментальною моделлю плюсів та Swift і пояснює всю неочевидну магію.
👉 https://www.douggregor.net/posts/swift-for-cxx-practitioners-value-types/
🇺🇦 iOSDevUA
👍1
💡Бекенд на Swift навколо ML моделі
Туторіал про те, як на Vapor написати простий бекенд, який дає доступ до Core ML моделі, що класифікує зображення.
🔗Код на GitHub
🇺🇦 iOSDevUA
Туторіал про те, як на Vapor написати простий бекенд, який дає доступ до Core ML моделі, що класифікує зображення.
🔗Код на GitHub
🇺🇦 iOSDevUA
Create with Swift
Using server-side Swift for machine learning processing
In this tutorial learn how to use a machine learning model in a Vapor server using Swift.
👍2
💡Невелика підбірка важливих хоткеїв у Xcode!
Я дуже сподіваюсь, що більшість з вас вже знайомі, якщо не з усіма, то з багатьма хоткеями, бо особисто мені стає погано, коли я бачу, як розробник з купою років досвіду не вміє нормально користуватися Xcode 🤪
Але новачкам точно буде корисно! 👍
👉 https://tanaschita.com/xcode-shortcuts/
🇺🇦 iOSDevUA
Я дуже сподіваюсь, що більшість з вас вже знайомі, якщо не з усіма, то з багатьма хоткеями, бо особисто мені стає погано, коли я бачу, як розробник з купою років досвіду не вміє нормально користуватися Xcode 🤪
Але новачкам точно буде корисно! 👍
👉 https://tanaschita.com/xcode-shortcuts/
🇺🇦 iOSDevUA
Tanaschita
My favorite Xcode keyboard shortcuts to be more productive
Using keyboard shortcuts is key of being productive and efficient when working with with Xcode. In this artice, I will show my favorite Xcode shortcuts.
💡Я кілька разів ділився матеріалом про OSLog. Це дійсно дуже зручний інструмент для логів.
Одне діло писати ці логи, але що, якщо ви хочете ще й читати їх у коді? 🤔
Наприклад, щоб зібрати логи і вивести на окремому екрані у своєму додатку, який буде доступний у дебаг-режимі? Мабуть, може бути корисним для тестувальників, щоб зручніше було знаходити проблеми і вже з деталями віддавати баг у роботу 🔥
В OSLog є така опція, хоч і з деякими обмеженнями 🥲
Детальніше у пості:
👉 https://useyourloaf.com/blog/fetching-oslog-messages-in-swift
🇺🇦 iOSDevUA
Одне діло писати ці логи, але що, якщо ви хочете ще й читати їх у коді? 🤔
Наприклад, щоб зібрати логи і вивести на окремому екрані у своєму додатку, який буде доступний у дебаг-режимі? Мабуть, може бути корисним для тестувальників, щоб зручніше було знаходити проблеми і вже з деталями віддавати баг у роботу 🔥
В OSLog є така опція, хоч і з деякими обмеженнями 🥲
Детальніше у пості:
👉 https://useyourloaf.com/blog/fetching-oslog-messages-in-swift
🇺🇦 iOSDevUA
Use Your Loaf - iOS Development News & Tips
Fetching OSLog Messages in Swift
Using the OSLog framework for logging in your Apps? How do you retrieve those logs at runtime?
👍1
З сьогоднішнього дня завантажувати додатки в 👨💻 App Store Connect можливо тільки з Xcode 15 і останньою SDK: iOS 17 і т.д.
🇺🇦 iOSDevUA
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Детальний розбір модифікаторів Overlay і Background у SwiftUI
У інструментарії SwiftUI overlay і background відіграють незамінну роль у різних сценаріях розробки.
📖 У цій статті розглянуті не тільки їх унікальні атрибути, але й розбираються фундаментальні відмінності від ZStack, а також показані приклади сценаріїв, для яких вони призначені.
🇺🇦 iOSDevUA
У інструментарії SwiftUI overlay і background відіграють незамінну роль у різних сценаріях розробки.
📖 У цій статті розглянуті не тільки їх унікальні атрибути, але й розбираються фундаментальні відмінності від ZStack, а також показані приклади сценаріїв, для яких вони призначені.
🇺🇦 iOSDevUA
👍1
💡Якщо ви використовуєте SwiftUI, то напевно використовуєте і
👉 https://www.swiftwithvincent.com/blog/be-careful-when-using-ontapgesture
🇺🇦 iOSDevUA
.onTapGesture(). Ось стаття, де автор говорить, що з цим потрібно бути обережнішим. І наводить кілька прикладів, де це може призвести до проблем 🤔👉 https://www.swiftwithvincent.com/blog/be-careful-when-using-ontapgesture
🇺🇦 iOSDevUA
Swift with Vincent
Be careful when using .onTapGesture() — Swift with Vincent
You’re more of a video kind of person? I’ve got you covered! Here’s a video with the same content than this article 🍿
👍1
💡Ефективний спосіб завантаження великих зображень у головному потоці
У більшості випадків нам підійде варіант:
Але якщо картинка дійсно велика, то це може візуально підвісити додаток на деякий час.
Особливо це проявиться, наприклад, при роботі з колекціями.
У такому випадку можна справедливо звернутися до документації (та до поради Вінсента), в яких говориться про те, що все ж є ще один спосіб.
prepareForDisplay декодує нашу картинку у фоновому потоці, і лише після цього можна використовувати результат із
Важливо не забути повернутися у головний потік, звісно.
Або використовувати
🇺🇦 iOSDevUA
У більшості випадків нам підійде варіант:
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
Нещодавно відбувся перший офіційний мітап Swift Server Side. Програма така:
👉 Як використовувати Swift на Linux, зокрема в хмарі та на портативних пристроях
👉 Розповідь про Vapor від одного з його розробників
👉 Q&A з учасниками Server-Side Workgroup
🇺🇦 iOSDevUA
👍1
💡Гайд по Swift Argument Parser
Якщо ви пишете на Swift якісь консольні додатки, ви точно використовуєте пакет Swift Argument Parser. У серії постів розбираються всі деталі роботи з ним, зокрема:
👉 Скорочені та повні флаги
👉 Інверсія флагів
👉 Флаги з enum'ами
З цікавого – прямо в статтю вбудована інтерактивна консоль, у якій можна погратися з прикладами.
🇺🇦 iOSDevUA
Якщо ви пишете на Swift якісь консольні додатки, ви точно використовуєте пакет Swift Argument Parser. У серії постів розбираються всі деталі роботи з ним, зокрема:
👉 Скорочені та повні флаги
👉 Інверсія флагів
👉 Флаги з enum'ами
З цікавого – прямо в статтю вбудована інтерактивна консоль, у якій можна погратися з прикладами.
🇺🇦 iOSDevUA