uz
Feedback
🇺🇦 iOS Dev UA - спільнота iOS розробників

🇺🇦 iOS Dev UA - спільнота iOS розробників

Kanalga Telegram’da o‘tish

Перша україномовна спільнота iOS розробників 🇺🇦 👨‍💻Цікаві матеріали зі світу розробки для продуктів Apple. Статті по розробці на Swift та SwiftUI. Огляд нових технологій в розробці від Apple. чат: @iOSDevsUAChat Ідеї та пропозиції: @SergeyZhuravel

Ko'proq ko'rsatish
384
Obunachilar
Ma'lumot yo'q24 soatlar
+17 kunlar
+1030 kunlar
Postlar arxiv
💡Що нового в UI тестах в Xcode 16 👉 Функція waitForNonExistence(withTimeout:), яка дозволяє прив’язатися до зникнення якогось елемента. 👉 Функція wait(for:toEqual:timeout:), яка дає можливість прив’язатися до моменту, коли властивість елемента буде дорівнювати певному значенню. 🇺🇦 iOSDevUA

💡Розбір режимів накладання у Swift: приклади та можливі варіанти Режими накладання (blend modes) відіграють найважливішу рол
💡Розбір режимів накладання у Swift: приклади та можливі варіанти Режими накладання (blend modes) відіграють найважливішу роль у дизайні. Вони необхідні при роботі з фото, створенні ефектів освітлення, і, наприклад, використовуються для досягнення ефекту глибини в зображеннях. 💬 Як випливає з назви, при використанні такого режиму відбувається змішування кольору кількох шарів пікселів за допомогою математичних формул для визначення ступеня впливу кожного пікселя на кінцеве зображення. Можна комбінувати будь-яку кількість шарів, але мінімально необхідно лише два — базовий і сам шар накладання. 📖 У цій статті докладно розглядаються різні режими накладання (та математичні формули), способи реалізації та приклади використання. 🇺🇦 iOSDevUA

💡Реалізація інвертованої прокрутки в месенджері на SwiftUI На відміну від більшості екранів, де контент починається з верхньої частини, а користувачам потрібно прокручувати вниз, для чатів все працює навпаки. Ті, хто розробляв додатки для обміну повідомленнями, напевно, знають трюк з трансформом. Якщо ні — то коротко це виглядає так:
CGAffineTransform(scaleX: 1, y: -1) для таблиці (і для комірок навпаки).
Для SwiftUI подібний хак можна реалізувати за допомогою кастомного ViewModifier. 📖 А ось тут Вінсент наводить приклад реалізації (і зачіпає питання, чому просто реверснути сам датасорс, наприклад, недостатньо). 🇺🇦 iOSDevUA

💡Як створити кастомний SF Symbol Ви можете користуватися не лише готовими SF Symbols, але й створювати повністю свої. У туторіалі розбираються всі кроки – від створення векторної іконки в Sketch до використання її в коді додатка. 🇺🇦 iOSDevUA

💡TextRenderer у SwiftUI У SwiftUI з’явився новий протокол TextRenderer, який замінює NSAttributedString. У статті розбирається, як за його допомогою підсвітити частину символів у рядку. 🇺🇦 iOSDevUA

🎛 Як додати свої контролі в Центр керування. Концепція як з віджетами та Live Activity Створюєте нову StaticControlConfigura
🎛 Як додати свої контролі в Центр керування. Концепція як з віджетами та Live Activity Створюєте нову StaticControlConfiguration. Якщо пам’ятаєте, у віджетів свій конфігуратор, у Live Activity також свій. І всі вони поруч. А за дії відповідають інтенти, як для Live Activity. Навіть протоколи ті ж самі. По суті, контролі — це віджети, які можна змінювати за розміром. Могли б взагалі до віджетів прирівняти, і все працювало б. 🇺🇦 iOSDevUA

💡Основою практично будь-якого iOS додатку на даний момент є робота з мережею. І, звісно, цю частину теж потрібно якось дебажити, оптимізувати, аналізувати тощо. Ось стаття про це. Автор тут розповідає про свій інструмент RocketSim, про який ми вже писали, і показує на його прикладі функцію з «копанням» у роботі запитів у проєкті. Але під капотом для цього він використовує опенсорсну бібліотеку Pulse. Тож якщо не хочете використовувати RocketSim, то можете спробувати просто цю бібліотеку напряму. Посилання є в статті. Самі функції дуже класні. Зручно дивитися, який запит спрацював у який момент часу, скільки зайняв, які дані були, код відповіді тощо. Виглядає принаймні дуже непогано! 👉 https://www.avanderlee.com/xcode/inspect-network-traffic-simulator/ 🇺🇦 iOSDevUA

💡Складнощі в роботі з кареткою Автор бібліотеки DeclarativeTextKit розповідає про неочевидні складнощі розрахунку позиції каретки та ментальну модель, яка допомагає міркувати навіть у граничних випадках. 🇺🇦 iOSDevUA

💡Animatable та AnimatablePair: призначення та приклади SwiftUI дозволяє створювати анімацію без особливих зусиль, але іноді нам потрібен більший контроль над тим, як рухаються та анімуються об’єкти. Наприклад, щоб синхронізувати анімацію декількох властивостей, нам потрібно використовувати AnimationPair:
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
@frozen public struct AnimatablePair<First, Second> : VectorArithmetic where First : VectorArithmetic, Second : VectorArithmetic
Більше інформації в офіційній документації Apple.
📖 У цій статті розглянуті Animatable та AnimatablePair, а також є приклади, як можна використовувати API для покращення анімацій у наших додатках. 📖 Нагадаю, що в каналі є ще одна стаття про створення багатоступеневої анімації. 🇺🇦 iOSDevUA

💡Про Meridian, ще один серверний фреймворк Meridian – фреймворк для розробки бекенда на Swift. Його відмінна особливість – A
💡Про Meridian, ще один серверний фреймворк Meridian – фреймворк для розробки бекенда на Swift. Його відмінна особливість – API, схожий на SwiftUI. Ще з цікавого: 👉Є підтримка вебсокетів 👉async/await з коробки 👉Можна зручно оголошувати свій Middleware 🇺🇦 iOSDevUA

💡Створення інтерфейсу пошуку у стилі Photos з iOS 18 Новий розділ виглядає як кастомна View у SwiftUI, яку Seb Vidal спробував відтворити за допомогою публічного API (але без реверс-інжинірингу не обійшлося). Затронуто також найскладніший момент — плавний перехід фону в стиль клавіатури. 📖 Тут можна прочитати про основні етапи створення такого екрану. 🛠 А тут подивитися на реалізацію в коді. 🇺🇦 iOSDevUA

Управління пам’яттю у Swift Безумовно, управління пам’яттю є найважливішим етапом для забезпечення максимальної продуктивност
Управління пам’яттю у Swift Безумовно, управління пам’яттю є найважливішим етапом для забезпечення максимальної продуктивності та запобігання витокам. Хочу поділитися статтею, в якій зачіпаються не лише базові речі (стек і купа), але й пастки, в які можна потрапити при реалізації функцій, абстракцій тощо. 📖 У цьому матеріалі розглянуті й ситуації, коли структури можуть бути неефективними у використанні порівняно з класами, відмінності статичної від динамічної диспетчеризації та багато іншого. 🇺🇦 iOSDevUA

💡Як працюють черги Чудовий пост про те, як працюють різні типи черг, за якими параметрами їх можна порівнювати між собою та
💡Як працюють черги Чудовий пост про те, як працюють різні типи черг, за якими параметрами їх можна порівнювати між собою та як пріоритизація запитів впливає на них. Найкрутіше – все це з інтерактивними прикладами! 🇺🇦 iOSDevUA

💡Клієнт-серверний додаток на вебсокетах з фреймворком Hummingbird Детальний туторіал про те, як написати прості клієнт і сервер для чат-додатка, які будуть спілкуватися за допомогою вебсокетів, на фреймворку Hummingbird. 🇺🇦 iOSDevUA

💡Expicitly built modules в Xcode 16 В Xcode 16 додали функцію “Explicitly built modules”, яка має допомагати прискорювати зб
💡Expicitly built modules в Xcode 16 В Xcode 16 додали функцію “Explicitly built modules”, яка має допомагати прискорювати збірки та робити помилки більш інформативними. У статті детально розповідається, як ця функція прискорює роботу xcodebuild, і як її можна увімкнути для свого проєкту. На Beta 1, правда, прискорення поки що не помітно. 🇺🇦 iOSDevUA

💡Створення багатоступеневої анімації в SwiftUI Анімації в додатку служать візуальними індикаторами, що інформують користувачів про здійснені дії. Вони особливо корисні при зміні інтерфейсу, наприклад, під час завантаження нового контенту або демонстрації нових дій. 📖 У цій статті розглядається приклад роботи з PhaseAnimator (його особливо зручно застосовувати, коли нам потрібна анімація, яка безперервно повторюється та реагує на події). 🇺🇦 iOSDevUA

💡Новий модальний транзишн. І для SwiftUI, і для UIKit. Звісно, iOS 18+
controller.preferredTransition = .zoom { _ in }
Концепція як у Hero (ось посилання, якщо раптом не стикалися), тільки виглядає гірше. 🇺🇦 iOSDevUA

Hello iOS developers! New digest is here! Hello everyone! New iOS weekly digest is here! 🚀🚀🚀 Last Week at Apple 🚀 🚀 🚀 Vulnerabilities in CocoaPods Open the Door to Supply Chain Attacks Against Thousands of iOS and MacOS Applications Multiple vulnerabilities affecting the CocoaPods ecosystem, have been discovered, posing a major risk of supply chain attacks: https://www.evasec.io/blog/eva-discovered-supply-chain-vulnerabities-in-cocoapods Let's dive into some iOS apps history 🙂 Let's read how Uber's iOS and Android applications were created. Brief History of Scaling Uber https://www.linkedin.com/pulse/brief-history-scaling-uber-josh-clemm-dfqgc/ SwiftUI can be a bit... eager When writing an application using AppKit or UIKit you feel can confident as to when views are created and released. Your code takes explicit actions for that to happen. SwiftUI is a big more nebulous. Let's look at a typical example. Below is a simple SwiftUI application that shows a partial list of SFSymbols and allows you to tap on one to see a larger version: https://www.attributedstrings.com/swiftui-can-be-a-bit-eager A Summary Of How To Pass Data To SwiftUI Environment The SwiftUI environment is an in-memory shared storage among all views within a view hierarchy. Thanks to it, various parts of an app can access shared data easily, allowing for better state management which is fundamental to SwiftUI. The environment simplifies data flow by just making it available to views, while each individual view can read or update only the pieces of data that’s interested in. In general, the environment lifts a big load of sharing data among views, it helps us write cleaner code, but most importantly, it lets us focus more on the views and the user interface: https://serialcoder.dev/text-tutorials/swiftui/a-summary-of-how-to-pass-data-to-swiftui-environment Mastering ScrollView in SwiftUI. Scroll Phases This year, the SwiftUI framework introduced several new scrolling APIs, allowing us to track and tune everything in a scroll view. This week, we will discuss monitoring scroll phases in SwiftUI: https://swiftwithmajid.com/2024/07/02/mastering-scrollview-in-swiftui-scroll-phases WebSocket tutorial using Swift and Hummingbird A great tutorial about how to create a server and a client using WebSockets and Hummingbird framework on Swift: https://swiftonserver.com/websocket-tutorial-using-swift-and-hummingbird

💡Оновили домашню сторінку document-based додатків (див. скріншот) 👔 Верхній хедер можна налаштувати, але елементи будуть як
💡Оновили домашню сторінку document-based додатків (див. скріншот) 👔 Верхній хедер можна налаштувати, але елементи будуть як на скріні — фон, кнопки і т.д. 👶 Якщо писали на SwiftUI, то зворотної сумісності немає — потрібен DocumentGroupLaunchScene iOS 18+. А на UIKit буде новеньке. 🇺🇦 iOSDevUA

💡Аналіз нововведень при роботі зі скролом в iOS 18 На WWDC 2024 Apple знову показала ряд чудових нових API для ScrollView у SwiftUI. 📖 У цій статті розглядаються основні зміни, а також аналізується розвиток важливих API з моменту створення SwiftUI. 🇺🇦 iOSDevUA