Настільки зручно, що незрозуміло, чому не зробили раніше.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🔥1
💡Що нового в SwiftUI в iOS 18
👉 Створення кастомних колекцій, аналогічних
👉 Новий Tab-бар, який автоматично з класною анімацією перетворюється на сайдбар і назад.
👉 Нові анімації для переходів між в'ю.
👉 Можливість зсунути скрол на конкретну позицію.
👉 Макрос Entry, за допомогою якого можна швидко задавати різні параметри оточення.
👉 Макрос Previewable, за допомогою якого можна задавати стейт для прев'ю.
🇺🇦 iOSDevUA
👉 Створення кастомних колекцій, аналогічних
List і TabView. 👉 Новий Tab-бар, який автоматично з класною анімацією перетворюється на сайдбар і назад.
👉 Нові анімації для переходів між в'ю.
👉 Можливість зсунути скрол на конкретну позицію.
👉 Макрос Entry, за допомогою якого можна швидко задавати різні параметри оточення.
👉 Макрос Previewable, за допомогою якого можна задавати стейт для прев'ю.
🇺🇦 iOSDevUA
Swift with Majid
What is new in SwiftUI after WWDC 24
WWDC 24 is here, and we have a lot to cover. Every year, SwiftUI matures by introducing more features to catch up with UIKit. This year is no exception. Let’s dive into the new features that the SwiftUI framework introduces.
Там було заборонено використовувати іконки для динамічного оновлення. Наприклад, як у
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
💡Підбірка анімацій з #WWDC24 з прикладами коду
Чудова сесія, в якій Робб і Філіп поділилися прикладами коду і новими підходами до реалізації.
📺 Нова анімація при скролі.
📺 Робота з кольором.
📺 View та ефекти.
📺 Робота з текстом і нові анімації (вже додав до закладок).
📺 Metal shaders (а куди ж без них).
Після завершення WWDC впевнений, що ще повернемося і розглянемо детально.
🇺🇦 iOSDevUA
Чудова сесія, в якій Робб і Філіп поділилися прикладами коду і новими підходами до реалізації.
📺 Нова анімація при скролі.
📺 Робота з кольором.
📺 View та ефекти.
📺 Робота з текстом і нові анімації (вже додав до закладок).
📺 Metal shaders (а куди ж без них).
Після завершення WWDC впевнений, що ще повернемося і розглянемо детально.
🇺🇦 iOSDevUA
👍3
💡Що нового в Swift 6
Традиційний детальний розбір всіх функцій нової версії Swift від Пола Хадсона.
🔗 Xcode playground з усіма прикладами
🇺🇦 iOSDevUA
Традиційний детальний розбір всіх функцій нової версії Swift від Пола Хадсона.
🔗 Xcode playground з усіма прикладами
🇺🇦 iOSDevUA
Hacking with Swift
What's new in Swift 6.0?
When fully enabled, Swift 6 is likely to require changes in pretty much every project.
❤3
💡Тепер можна додавати свої контроли в центр управління
🔖 Працює через App Intents
Синтаксис схожий на інтенти, але налаштовується через
🇺🇦 iOSDevUA
Синтаксис схожий на інтенти, але налаштовується через
ControlWidgetConfiguration🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Media is too big
VIEW IN TELEGRAM
Тепер Sidebar - це варіант відображення TabView. Раніше використовували модифікатор
.tabItem, а тепер так:Tab("Item", systemImage: "play") {
// Content
}Кастомізація працює "з коробки" і зберігається в App Storage. Код універсальний — для iPhone та Vision Pro показує таб-бар, для мака - сайд-бар.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
💡Новий метод count(where:) у Swift 6
➡ У SE-0220 з'явився новий метод count(where:), який виконує filter() і count за один прохід.
Це дозволяє уникнути створення нового масиву і забезпечує чітке та прозоре рішення підрахунку.
🤩 Цей метод доступний для всіх типів, що відповідають Sequence, тому його можна використовувати і для множин, і для словників.
🇺🇦 iOSDevUA
Це дозволяє уникнути створення нового масиву і забезпечує чітке та прозоре рішення підрахунку.
🤩 Цей метод доступний для всіх типів, що відповідають Sequence, тому його можна використовувати і для множин, і для словників.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Xcode 16 спростить пошук проблем, які призводять до зависання додатків.
🛠 Тепер за допомогою нового інструмента flame graph можна буде визначити, виконання якого саме коду займає більшу частину часу при серйозних зависаннях у додатку (особливо корисно на старті).
🤩 Інтервали вже зважені за параметром відсотка часу, який вони займають.
Бонус: в Organizer додали нову категорію Launches, у якій можна буде побачити, що саме є причиною довгого запуску додатка у користувачів (статистика за весь час).
🇺🇦 iOSDevUA
🛠 Тепер за допомогою нового інструмента flame graph можна буде визначити, виконання якого саме коду займає більшу частину часу при серйозних зависаннях у додатку (особливо корисно на старті).
🤩 Інтервали вже зважені за параметром відсотка часу, який вони займають.
Бонус: в Organizer додали нову категорію Launches, у якій можна буде побачити, що саме є причиною довгого запуску додатка у користувачів (статистика за весь час).
🇺🇦 iOSDevUA
⚡1
🥴Найбільш незрозуміле нововведення - тонування іконок.
Для темної теми ви даєте кольорову іконоку, а фон залишається системним. Для тонування - ч/б іконку. Можна експериментувати з прозорістю елементів.
🖼 У беті Xcode вже можна додавати іконоки, але наразі вони завжди показують стандартну.
🇺🇦 iOSDevUA
Для темної теми ви даєте кольорову іконоку, а фон залишається системним. Для тонування - ч/б іконку. Можна експериментувати з прозорістю елементів.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
👀2🦄1
💡Live Activity завезли для годинників. Якщо ви вже користувалися LA, то нічого не змінилося. Якщо ні, є туторіал.
UI для годинників можна робити за допомогою перевірки env:
У єнума є два типи,
🇺🇦 iOSDevUA
UI для годинників можна робити за допомогою перевірки env:
@Environment(\.activityFamily) var activityFamily
У єнума є два типи,
.small і .medium. Інформативно назвали 🙆🇺🇦 iOSDevUA
👍5
Dark mode app icons
Рекомендації щодо адаптації іконок додатків різної композиції до темного режиму таким чином, щоб вони не виділялися надмірною яскравістю, але при цьому зберігали впізнаваність.
🇺🇦 iOSDevUA
Рекомендації щодо адаптації іконок додатків різної композиції до темного режиму таким чином, щоб вони не виділялися надмірною яскравістю, але при цьому зберігали впізнаваність.
🇺🇦 iOSDevUA
❤2
💡Підбірка найкращих сесій з WWDC24 (Swift, Performance, Debugging)
WWDC підійшов до кінця, тому вирішив виділити сесії, які варто переглянути в пріоритетному порядку.
📼 Аналіз heap memory
📼 Використання некопійованих типів у Swift
📼 Swift Performance
📼 Підбірка анімацій з WWDC з прикладами коду
📼 Показники продуктивності в AVFoundation
📼 Run, Break, Inspect: Досліджуйте ефективну відладку в LLDB
📼 Swift Testing
📼 База в Xcode
📼 Міграція на Swift 6
📼 Що нового в UIKit
🇺🇦 iOSDevUA
WWDC підійшов до кінця, тому вирішив виділити сесії, які варто переглянути в пріоритетному порядку.
📼 Аналіз heap memory
Розповідають не тільки про основи динамічної пам’яті (кучу), але й про те, як використовувати Instruments та Xcode для аналізу та усунення поширених проблем. А ще методи та найкращі практики для діагностики витоків у додатку.
📼 Використання некопійованих типів у Swift
Велика сесія, яка дозволить дізнатися, що взагалі мається на увазі під копіюванням у Swift, коли можна використовувати некопійований тип і як value ownership дозволяє чітко позначити свої наміри.
📼 Swift Performance
Сесія пояснює, як саме Swift забезпечує баланс продуктивності. Наводять приклади різних функцій Swift і способи їх реалізації, щоб краще зрозуміти можливі потенційні проблеми, що впливають на продуктивність. Можна глибше зануритися в основи виділення пам'яті, memory layout загалом, дженеріки, замикання – загалом топ і в закладки.
📼 Підбірка анімацій з WWDC з прикладами коду
Нові анімації скролу, ефекти, все з прикладами.
📼 Показники продуктивності в AVFoundation
Всі, хто працював з відео, компресією або навіть просто використовував AVPlayer, знають, як мало документації та прикладів по цьому розділу. У цій сесії розповідають, які метрики варто враховувати і як вони впливають на продуктивність.
📼 Run, Break, Inspect: Досліджуйте ефективну відладку в LLDB
Показують, як максимально ефективно використовувати крашлоги і бектрейси, а також як покращити брейкпоінти за допомогою дій та складних умов. А ще особливу увагу приділено команді «p» і новим можливостям Swift, які покращать досвід відладки.
📼 Swift Testing
Можна дізнатися, як написати набір тестів, використовуючи вбудовані функції. Як розширювати існуючі тести, щоб охопити більше сценаріїв, організувати тести в різних середовищах і оптимізувати тести для паралельного виконання.
📼 База в Xcode
Розповідають про популярні фішки Xcode, які допоможуть прискорити розробку.
📼 Міграція на Swift 6
Можна дізнатися, як перевести існуючий додаток на Swift 6 на реальному прикладі. Розповідають про опцію переносу модуль за модулем і як компілятор допомагає виявити код, схильний до ризику гонок даних. Розповідають про ізоляцію та як вирішити проблему одночасного доступу до спільного змінного стану.
📼 Що нового в UIKit
Дізнайтеся про всі новинки в UIKit, включаючи зручність запуску вкладок і документів, переходи, зміни тексту та введення. Також розповідають про сумісність анімацій і жестів UIKit і SwiftUI, а також загальні покращення у всьому UIKit.
🇺🇦 iOSDevUA
❤7
💡Swift переїхав в окрему організацію на GitHub
Swift тепер знаходиться не в організації Apple, а у власній організації Swiftlang. Там же буде розміщуватися стандартна бібліотека, компілятор, всі основні інструменти та бібліотеки, а також інші проекти, важливі для екосистеми. У майбутньому обіцяють представити єдиний процес додавання нових проектів в організацію та їх еволюції, почати використовувати GitHub Teams і покращувати CI для всього.
🇺🇦 iOSDevUA
Swift тепер знаходиться не в організації Apple, а у власній організації Swiftlang. Там же буде розміщуватися стандартна бібліотека, компілятор, всі основні інструменти та бібліотеки, а також інші проекти, важливі для екосистеми. У майбутньому обіцяють представити єдиний процес додавання нових проектів в організацію та їх еволюції, почати використовувати GitHub Teams і покращувати CI для всього.
🇺🇦 iOSDevUA
Swift.org
New GitHub Organization for the Swift Project
Today, we are announcing an exciting development for the Swift programming language: its migration to a dedicated GitHub organization at GitHub.com/swiftlang.
❤2
💡Чому в Swift повільна перевірка типів
У недавньому інтерв'ю Кріс Латтнер розповів, що вважає систему перевірки типів у Swift невдалою. У статті розбирається, чому в деяких випадках час перевірки типів може зростати експоненціально зі збільшенням складності виразу.
🇺🇦 iOSDevUA
У недавньому інтерв'ю Кріс Латтнер розповів, що вважає систему перевірки типів у Swift невдалою. У статті розбирається, чому в деяких випадках час перевірки типів може зростати експоненціально зі збільшенням складності виразу.
🇺🇦 iOSDevUA
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🚀Wow!! Калькулятор нарешті з’явиться на iPad з iPadOS 18, з розширеними функціями та інтеграцією Apple Pencil.
Новий додаток Calculator також буде доступний для всіх сумісних моделей і матиме узгоджений інтерфейс на всіх пристроях.
Спекуляції щодо відсутності додатка Calculator на iPad можуть бути пов’язані з філософією дизайну та пріоритизацією всередині Apple.
🇺🇦 iOSDevUA
Новий додаток Calculator також буде доступний для всіх сумісних моделей і матиме узгоджений інтерфейс на всіх пристроях.
Спекуляції щодо відсутності додатка Calculator на iPad можуть бути пов’язані з філософією дизайну та пріоритизацією всередині Apple.
🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Створення анімації в стилі Siri в iOS 18
Siddhant Mehta та Meng To використовували комбінацію Mesh Gradient (приклад ви можете побачити у моєму пості вище) та ripple-ефекту.
🛠 Вихідний код проєкту доступний на GitHub.
📺 Сесія з прикладами анімацій ось тут.
🇺🇦 iOSDevUA
Siddhant Mehta та Meng To використовували комбінацію Mesh Gradient (приклад ви можете побачити у моєму пості вище) та ripple-ефекту.
🛠 Вихідний код проєкту доступний на GitHub.
📺 Сесія з прикладами анімацій ось тут.
🇺🇦 iOSDevUA
Hello iOS developers! New digest is here!
Hello everyone! New iOS weekly digest is here!
🚀🚀🚀 Last Week at Apple 🚀 🚀 🚀
SwiftUI, SwiftUI but what about UIKit? Jordan Morgan wrote an interesting article about UIKit improvements in iOS 18:
iOS 18: Notable UIKit Additions
https://www.swiftjectivec.com/ios-18-notable-uikit-additions
Why Swift's type checker is so slow
The Swift compiler can take an absurdly long time to compile expressions due to how types are inferred1. Here’s an explanation by the creator of Swift, Chris Lattner (from from his Mojo talk and edited for clarity):
My experience with Swift is we tried to make a really fancy bi-directional Hindley-Milner type checker and it’s really great because you can have very beautiful minimal syntax but the problem is that A) compile times are really bad (particularly if you have complicated expressions) and 😎 the error messages are awful because now you have a global constraint system and when something goes wrong you have to infer what happened and the user can’t know that something over there made it so something over here can’t type check. In my experience it sounds great but it doesn’t work super well:
https://danielchasehooper.com/posts/why-swift-is-slow
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 to manipulate and read the scroll offset:
https://swiftwithmajid.com/2024/06/17/mastering-scrollview-in-swiftui-scroll-offset
Async await in Swift explained with code examples
Async await is part of the new structured concurrency changes that arrived in Swift 5.5 during WWDC 2021. Concurrency in Swift means allowing multiple pieces of code to run at the same time. This is a very simplified description, but it should give you an idea already how important concurrency in Swift is for the performance of your apps. With the new async methods and await statements, we can define methods performing work asynchronously:
https://www.avanderlee.com/swift/async-await
If you wondered how many Apple pays to OpenAI for ChatGPT integration, the answer is: zero:
https://www.macrumors.com/2024/06/13/apple-not-paying-openai-chatgpt-ios-18
And the last but not least - one hard thing for us as iOS and MacOS developers:
iOS 18 could ‘sherlock’ $400M in app revenue
This feels natural and probably good for end users but not for developers. Especially I can't understand when developers are happy about Apple "killed" some company or startup - we don't know when our app or company will be "killed" next:
https://techcrunch.com/2024/06/18/ios-18-could-sherlock-400m-in-app-revenue/
Hello everyone! New iOS weekly digest is here!
🚀🚀🚀 Last Week at Apple 🚀 🚀 🚀
SwiftUI, SwiftUI but what about UIKit? Jordan Morgan wrote an interesting article about UIKit improvements in iOS 18:
iOS 18: Notable UIKit Additions
https://www.swiftjectivec.com/ios-18-notable-uikit-additions
Why Swift's type checker is so slow
The Swift compiler can take an absurdly long time to compile expressions due to how types are inferred1. Here’s an explanation by the creator of Swift, Chris Lattner (from from his Mojo talk and edited for clarity):
My experience with Swift is we tried to make a really fancy bi-directional Hindley-Milner type checker and it’s really great because you can have very beautiful minimal syntax but the problem is that A) compile times are really bad (particularly if you have complicated expressions) and 😎 the error messages are awful because now you have a global constraint system and when something goes wrong you have to infer what happened and the user can’t know that something over there made it so something over here can’t type check. In my experience it sounds great but it doesn’t work super well:
https://danielchasehooper.com/posts/why-swift-is-slow
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 to manipulate and read the scroll offset:
https://swiftwithmajid.com/2024/06/17/mastering-scrollview-in-swiftui-scroll-offset
Async await in Swift explained with code examples
Async await is part of the new structured concurrency changes that arrived in Swift 5.5 during WWDC 2021. Concurrency in Swift means allowing multiple pieces of code to run at the same time. This is a very simplified description, but it should give you an idea already how important concurrency in Swift is for the performance of your apps. With the new async methods and await statements, we can define methods performing work asynchronously:
https://www.avanderlee.com/swift/async-await
If you wondered how many Apple pays to OpenAI for ChatGPT integration, the answer is: zero:
https://www.macrumors.com/2024/06/13/apple-not-paying-openai-chatgpt-ios-18
And the last but not least - one hard thing for us as iOS and MacOS developers:
iOS 18 could ‘sherlock’ $400M in app revenue
This feels natural and probably good for end users but not for developers. Especially I can't understand when developers are happy about Apple "killed" some company or startup - we don't know when our app or company will be "killed" next:
https://techcrunch.com/2024/06/18/ios-18-could-sherlock-400m-in-app-revenue/
Swiftjective-C
iOS 18: Notable UIKit Additions
iOS 18 is out in the wild! As always, let’s check in with our mature interface framework, UIKit.
💡UIKitNavigation – бібліотека від Pointfree
За мотивами недавньої серії роликів про сучасну розробку на UIKit Pointfree випустили прев'ю бібліотеки UIKitNavigation, за допомогою якої можна керувати станом додатка, реалізовувати біндинги та навігацію за аналогією зі SwiftUI.
🇺🇦 iOSDevUA
За мотивами недавньої серії роликів про сучасну розробку на UIKit Pointfree випустили прев'ю бібліотеки UIKitNavigation, за допомогою якої можна керувати станом додатка, реалізовувати біндинги та навігацію за аналогією зі SwiftUI.
🇺🇦 iOSDevUA
www.pointfree.co
A preview of our upcoming UIKitNavigation library
We are excited to announce a beta preview of UIKitNavigation: a toolkit for building modern UIKit apps, including powerful state management tools and tools to drive navigation in UIKit from state.
❤1
💡NotPrivateAPIs — проєкт, який розкриває деякі приватні API
❗️Звичайно, їх не можна використовувати в робочих проєктах і викладати в App Store.
Наприклад, меню зі своїми елементами — це взагалі ще та задача (подивіться реакції в Messages над повідомленням, або реалізацію в телеграмі).
📖 Morris Richman зібрав в одному місці речі, які використовує Apple: наприклад, як додати кастомний хедер в UIAlertController або як змінити іконку додатка без попередження користувача.
🇺🇦 iOSDevUA
❗️Звичайно, їх не можна використовувати в робочих проєктах і викладати в App Store.
Наприклад, меню зі своїми елементами — це взагалі ще та задача (подивіться реакції в Messages над повідомленням, або реалізацію в телеграмі).
📖 Morris Richman зібрав в одному місці речі, які використовує Apple: наприклад, як додати кастомний хедер в UIAlertController або як змінити іконку додатка без попередження користувача.
🇺🇦 iOSDevUA
👍2