💡NodeSwift – пакет для інтеропу Swift з Node.js
NodeSwift – пакет, за допомогою якого можна реалізовувати інтероп Swift з Node.js в обидва боки. Навіщо це взагалі може бути потрібно:
👉 Працювати з нативним кодом і macOS API в Electron-додатку
👉 Використовувати NPM пакети з Swift-додатку
👉 Прискорювати JS код, реалізуючи критичні частини на Swift
🇺🇦 iOSDevUA
NodeSwift – пакет, за допомогою якого можна реалізовувати інтероп Swift з Node.js в обидва боки. Навіщо це взагалі може бути потрібно:
👉 Працювати з нативним кодом і macOS API в Electron-додатку
👉 Використовувати NPM пакети з Swift-додатку
👉 Прискорювати JS код, реалізуючи критичні частини на Swift
🇺🇦 iOSDevUA
GitHub
GitHub - kabiroberai/node-swift: Create Node modules in Swift
Create Node modules in Swift. Contribute to kabiroberai/node-swift development by creating an account on GitHub.
💡Як iOS 18 покращує роботу з градієнтами
Дуже часто в проектах розробники використовують додатковий градієнт, щоб створити контраст між фоном і текстом.
Однак при такому використанні лінійного градієнта будуть видні перепади яскравості та різкий перехід.
📖 В iOS 18 доступне нове API для змішування кольорів. Тому, використовуючи
Приклад використання під катом:
📖 Додатково почитати про змішування кольорів можна в цій статті.
🇺🇦 iOSDevUA
Дуже часто в проектах розробники використовують додатковий градієнт, щоб створити контраст між фоном і текстом.
Однак при такому використанні лінійного градієнта будуть видні перепади яскравості та різкий перехід.
📖 В iOS 18 доступне нове API для змішування кольорів. Тому, використовуючи
UnitCurve, можна інтерполювати кольори за допомогою вбудованих або кастомних кривих Безьє, щоб забезпечити плавність переходу.Приклад використання під катом:
extension Gradient {
init(from: Color, to:Color, with curve:UnitCurve, steps:Int = 10) {
let colors = stride(from: 0.0, through: 1.0, by: 1.0 / Double(steps))
.map { f in
from.mix(with: to, by: curve.value(at: f))
}
self.init(colors: colors)
}
}📖 Додатково почитати про змішування кольорів можна в цій статті.
🇺🇦 iOSDevUA
🔥2
💡Правила створення класних анімацій
Рекомендації щодо того, як створювати красиві та корисні анімації. Більшість рекомендацій супроводжуються інтерактивними прикладами. Наприклад, можна пограти з різними параметрами spring-анімації, щоб відчути, при яких значеннях вона буде відчуватися максимально природньо.
🇺🇦 iOSDevUA
Рекомендації щодо того, як створювати красиві та корисні анімації. Більшість рекомендацій супроводжуються інтерактивними прикладами. Наприклад, можна пограти з різними параметрами spring-анімації, щоб відчути, при яких значеннях вона буде відчуватися максимально природньо.
🇺🇦 iOSDevUA
💡Як керувати позицією скролу в SwiftUI
Одна з найбільш очікуваних нових фіч у SwiftUI – програмний скрол до будь-якої позиції. У статті розглядаються основні можливості нового API:
👉 Визначення позиції скролу як хардкодом, так і через позицію інших елементів.
👉 Біндинг позиції скролу до стейту.
👉 Анімування зміни скролу.
🇺🇦 iOSDevUA
Одна з найбільш очікуваних нових фіч у SwiftUI – програмний скрол до будь-якої позиції. У статті розглядаються основні можливості нового API:
👉 Визначення позиції скролу як хардкодом, так і через позицію інших елементів.
👉 Біндинг позиції скролу до стейту.
👉 Анімування зміни скролу.
🇺🇦 iOSDevUA
Swift with Majid
Mastering ScrollView in SwiftUI. Scroll Offset
WWDC 24 is over, and I decided to start writing posts about new features in the upcoming iteration of the SwiftUI framework. Apple continues filling gaps this year by introducing more granular control over the scroll position. This week, we will learn how…
💡Realm vs SwiftData: що швидше?
Jacob Bartlett з компанії Emerge Tools провів велике дослідження і порівняв продуктивність за трьома ключовими метриками:
1️⃣ Швидкість.
2️⃣ Розмір.
3️⃣ Пам’ять.
І хоча з точки зору запису та виконання простих запитів на читання Realm попереду, але в деяких моментах завдяки чудовому управлінню графами об’єктів при роботі з більш складними даними SwiftData виявилася продуктивнішою.
При невеликих обсягах (≤10 000 елементів, що охоплює переважну більшість сценаріїв у мобільних додатках) SwiftData також була набагато швидшою при оновленні існуючих даних.
📖 Багато графіків, висновків і цікавих особливостей можна дізнатися в цій статті.
🇺🇦 iOSDevUA
Jacob Bartlett з компанії Emerge Tools провів велике дослідження і порівняв продуктивність за трьома ключовими метриками:
1️⃣ Швидкість.
2️⃣ Розмір.
3️⃣ Пам’ять.
І хоча з точки зору запису та виконання простих запитів на читання Realm попереду, але в деяких моментах завдяки чудовому управлінню графами об’єктів при роботі з більш складними даними SwiftData виявилася продуктивнішою.
При невеликих обсягах (≤10 000 елементів, що охоплює переважну більшість сценаріїв у мобільних додатках) SwiftData також була набагато швидшою при оновленні існуючих даних.
📖 Багато графіків, висновків і цікавих особливостей можна дізнатися в цій статті.
🇺🇦 iOSDevUA
💡Helm – нативний додаток macOS для роботи з App Store Connect
Я здивований, що такий клієнт з’явився лише зараз. З появою у App Store Connect нормального API, ідея лежала на поверхні.
Що вміє додаток:
👉 Керувати білдами та користувачами в TestFlight
👉 Перевіряти статус білдів
👉 Перемикатися між різними командами
👉 Керувати локалізацією сторінки додатка та всіма ASO речами
🇺🇦 iOSDevUA
Я здивований, що такий клієнт з’явився лише зараз. З появою у App Store Connect нормального API, ідея лежала на поверхні.
Що вміє додаток:
👉 Керувати білдами та користувачами в TestFlight
👉 Перевіряти статус білдів
👉 Перемикатися між різними командами
👉 Керувати локалізацією сторінки додатка та всіма ASO речами
🇺🇦 iOSDevUA
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
💡Створення ефекту переходу App Store за допомогою NavigationTransition в iOS 18
Цей ефект можна побачити, наприклад, у розділі «Сьогодні» або на📺 .
І якщо створення подібного переходу в iOS 18 може зайняти пару рядків коду, то повторення анімації з урахуванням усіх ефектів — значно складніше завдання.
📖 У цій статті Peter Friese поетапно розповідає, які моменти варто враховувати, і показує всі ітерації на прикладах коду.
🇺🇦 iOSDevUA
Цей ефект можна побачити, наприклад, у розділі «Сьогодні» або на
І якщо створення подібного переходу в iOS 18 може зайняти пару рядків коду, то повторення анімації з урахуванням усіх ефектів — значно складніше завдання.
📖 У цій статті Peter Friese поетапно розповідає, які моменти варто враховувати, і показує всі ітерації на прикладах коду.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Нова фішка в Swift 5.9! 😀
Тепер ви можете використовувати
🇺🇦 iOSDevUA
Тепер ви можете використовувати
if як вираз, що значно полегшує динамічне встановлення значення константи 👌🇺🇦 iOSDevUA
🔥2
💡SwiftUI Tip
Рендер кількох view як одне складене представлення за допомогою модифікатора
🇺🇦 iOSDevUA
Рендер кількох view як одне складене представлення за допомогою модифікатора
compositingGroup().🇺🇦 iOSDevUA
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
💡Створення динамічних текстових ефектів за допомогою TextRenderer
👨💻 Використовуючи метод draw протоколу
Нові функції в iOS 18 надають нам доступ до багатьох раніше недоступних деталей, таких як визначення того, чи обрізаний текст через властивість Layout’s
📖 У цьому матеріалі розглянуті не лише плюси, а й обмеження та складнощі роботи з анімацією загалом. А код можна подивитися ось тут.
🇺🇦 iOSDevUA
👨💻 Використовуючи метод draw протоколу
TextRenderer, ми повинні виконати рендеринг на основі інформації про елементи, наданої Text.Layout в рамках GraphicsContext.Нові функції в iOS 18 надають нам доступ до багатьох раніше недоступних деталей, таких як визначення того, чи обрізаний текст через властивість Layout’s
isTruncated, кількість рядків, що відображаються після рендерингу, та конкретні дані про розташування тексту.📖 У цьому матеріалі розглянуті не лише плюси, а й обмеження та складнощі роботи з анімацією загалом. А код можна подивитися ось тут.
🇺🇦 iOSDevUA
Hello iOS developers! New digest is here!
Hello everyone! New iOS weekly digest is here!
🚀🚀🚀 Last Week at Apple 🚀 🚀 🚀
What’s new in SwiftUI for iOS 18
We got new API for colors and gradients, more scrollview improvements, tab improvements, and more:
https://www.hackingwithswift.com/articles/270/whats-new-in-swiftui-for-ios-18
The rules of creating beautiful animations
People increasingly select their tools based on the overall experience rather than just functionality. A predictable and delightful experience is what makes a product stand out from a crowded market. That's why companies invest in design engineers for example. Animations can play a big role in creating such experiences:
https://emilkowal.ski/ui/great-animations
Mastering ScrollView in SwiftUI. Scroll Geometry
The ScrollPosition type is all you need to programmatically read or change the scroll position. Still, it doesn’t provide enough information when a user interacts with a scroll view using gestures. SwiftUI solves this problem by introducing the new ScrollGeometry type. This week, we will learn how to use the new onScrollGeometryChange view modifier to monitor scroll geometry:
https://swiftwithmajid.com/2024/06/25/mastering-scrollview-in-swiftui-scroll-geometry
Using TextRenderer to create highlighted text
TextRenderer is a new protocol introduced at WWDC 2024 which lets us enhance how text is rendered in SwiftUI. In this small post, I want to show how to create a view that enables you to highlight certain parts of a given String. Previously this was primarily done using NSAttributedString, but with TextRenderer it is now possible to do the same in a pure SwiftUI way:
https://alexanderweiss.dev/blog/2024-06-24-using-textrenderer-to-create-highlighted-text
Typed throws in Swift explained with code examples
Typed throws are new since Xcode 16 and allow you to define the type of error a method throws. Instead of handling any error, you can handle exact cases and benefit from compiling time checks for newly added instances. They were introduced and designed in Swift Evolution proposal SE-413.
I encourage you to read Try Catch Throw: Error Handling in Swift with Code Examples before diving into typed errors so you’re fully aware of the basics of error handling in Swift. This article will continue on the same path using similar code examples:
https://www.avanderlee.com/swift/typed-throws
Consolidated ViewState
Managing multiple states in SwiftUI views can be complex and error-prone. This post addresses the issue by introducing a consolidated generic ViewState enum, simplifying state management, reducing bugs, and enhancing maintainability:
https://www.ludafux.com/post/consolidated-viewstate
#Tools
Build with Xcode, Ship with Helm.
A native macOS app for App Store Connect that streamlines app updates and releases, making the process faster and easier:
https://helm-app.com/
Hello everyone! New iOS weekly digest is here!
🚀🚀🚀 Last Week at Apple 🚀 🚀 🚀
What’s new in SwiftUI for iOS 18
We got new API for colors and gradients, more scrollview improvements, tab improvements, and more:
https://www.hackingwithswift.com/articles/270/whats-new-in-swiftui-for-ios-18
The rules of creating beautiful animations
People increasingly select their tools based on the overall experience rather than just functionality. A predictable and delightful experience is what makes a product stand out from a crowded market. That's why companies invest in design engineers for example. Animations can play a big role in creating such experiences:
https://emilkowal.ski/ui/great-animations
Mastering ScrollView in SwiftUI. Scroll Geometry
The ScrollPosition type is all you need to programmatically read or change the scroll position. Still, it doesn’t provide enough information when a user interacts with a scroll view using gestures. SwiftUI solves this problem by introducing the new ScrollGeometry type. This week, we will learn how to use the new onScrollGeometryChange view modifier to monitor scroll geometry:
https://swiftwithmajid.com/2024/06/25/mastering-scrollview-in-swiftui-scroll-geometry
Using TextRenderer to create highlighted text
TextRenderer is a new protocol introduced at WWDC 2024 which lets us enhance how text is rendered in SwiftUI. In this small post, I want to show how to create a view that enables you to highlight certain parts of a given String. Previously this was primarily done using NSAttributedString, but with TextRenderer it is now possible to do the same in a pure SwiftUI way:
https://alexanderweiss.dev/blog/2024-06-24-using-textrenderer-to-create-highlighted-text
Typed throws in Swift explained with code examples
Typed throws are new since Xcode 16 and allow you to define the type of error a method throws. Instead of handling any error, you can handle exact cases and benefit from compiling time checks for newly added instances. They were introduced and designed in Swift Evolution proposal SE-413.
I encourage you to read Try Catch Throw: Error Handling in Swift with Code Examples before diving into typed errors so you’re fully aware of the basics of error handling in Swift. This article will continue on the same path using similar code examples:
https://www.avanderlee.com/swift/typed-throws
Consolidated ViewState
Managing multiple states in SwiftUI views can be complex and error-prone. This post addresses the issue by introducing a consolidated generic ViewState enum, simplifying state management, reducing bugs, and enhancing maintainability:
https://www.ludafux.com/post/consolidated-viewstate
#Tools
Build with Xcode, Ship with Helm.
A native macOS app for App Store Connect that streamlines app updates and releases, making the process faster and easier:
https://helm-app.com/
Hacking with Swift
What’s new in SwiftUI for iOS 18
We got new API for colors and gradients, more scrollview improvements, tab improvements, and more.
💡SwiftUI tip
Щоб обернути текст в межах зображення або view, ми можемо використовувати модифікатор
👉 https://nilcoalescing.com/blog/WrappingTextWithinAnotherViewInSwiftUI/
🇺🇦 iOSDevUA
Щоб обернути текст в межах зображення або view, ми можемо використовувати модифікатор
overlay().👉 https://nilcoalescing.com/blog/WrappingTextWithinAnotherViewInSwiftUI/
🇺🇦 iOSDevUA
Алгоритм Чайкіна в Swift: призначення та реалізація
Перш ніж подивитися, як реалізувати цей алгоритм у Swift, перегляньте чудову статтю про те, як відтворити рукописний шрифт.
🐱 У цього алгоритму багато застосувань: графічний дизайн, анімації, шрифти та багато іншого.
📖 Тут ви можете подивитися приклад реалізації на Swift.
🇺🇦 iOSDevUA
Алгоритм Чайкіна - це простий метод згладжування грубої лінії в красиву плавну криву. Він працює шляхом багаторазового додавання нових точок вздовж кожного сегмента лінії на відстані 25 і 75 % шляху між початковими точками, а потім з’єднує ці нові точки. З кожним разом лінія стає все більш і більш гладкою.
Перш ніж подивитися, як реалізувати цей алгоритм у Swift, перегляньте чудову статтю про те, як відтворити рукописний шрифт.
📖 Тут ви можете подивитися приклад реалізації на Swift.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
try Tips.configure([
.cloudKitContainer(
.named("your-id")
)
])
Підказки також можна ставити в чергу (див. скриншот). Працює через
TipGroup.Зворотну сумісність не додали, тож хоч і зручно — але вручну не чіпати.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Як вказати розташування кнопок у навігаційній панелі в SwiftUI?
Ви можете використовувати параметр розміщення
🇺🇦 iOSDevUA
Ви можете використовувати параметр розміщення
ToolbarItem, щоб вказати, де ви хочете розмістити кнопку.🇺🇦 iOSDevUA
💡Багато схожого вже публікувалось, але це основи основ, тому можна публікувати ще.
Черговий матеріал про використання async/await. Багато кейсів, все на різних прикладах!
👉 https://www.avanderlee.com/swift/async-await/
🇺🇦 iOSDevUA
Черговий матеріал про використання async/await. Багато кейсів, все на різних прикладах!
👉 https://www.avanderlee.com/swift/async-await/
🇺🇦 iOSDevUA
SwiftLee
Async await in Swift explained with code examples
Async await in Swift allows to write asynchronous tasks with structured concurrency. Maintain readability in complex code.
👍3
💡Записи Swift Server Side Meetup #2
Apple продовжує організовувати мітапи про серверний Swift. Цього разу в програмі два доклади:
👉 Як деплоїти Vapor на платформу Fly.io за допомогою Docker
👉 Огляд релізу фреймворку Hummingbird 2
Окрім докладів – AMA сесія з учасниками робочої групи Swift on the Server.
🇺🇦 iOSDevUA
Apple продовжує організовувати мітапи про серверний Swift. Цього разу в програмі два доклади:
👉 Як деплоїти Vapor на платформу Fly.io за допомогою Docker
👉 Огляд релізу фреймворку Hummingbird 2
Окрім докладів – AMA сесія з учасниками робочої групи Swift on the Server.
🇺🇦 iOSDevUA
YouTube
Swift Server Side Meetup #02
Calling all Swift developers who are eager to harness the power of Swift on the server-side!
Join the Swift Server Working Group for their online meetup, where you'll connect with fellow enthusiasts, dive into the latest advancements and best practices…
Join the Swift Server Working Group for their online meetup, where you'll connect with fellow enthusiasts, dive into the latest advancements and best practices…