This media is not supported in your browser
VIEW IN TELEGRAM
Редакция App Store отмечает лучшие приложения и игры ежегодно более десяти лет.
В этот раз представлено 40 разработчиков приложений и игр в 10 различных категориях — за их превосходство, изобретательность и технические достижения в приложениях и играх.
Например, для iPhone в этот раз в главной категории: AllTrails, Duolingo и Flighty.
А для мака: Linearity Curve, Photomator и Portal (другой🍰).
Please open Telegram to view this post
VIEW IN TELEGRAM
Эффективные способы управления памятью при работе с замыканиями в Swift
👨💻 Одной из важнейших областей, где нам нужно уделять особое внимание при разработке, являются замыкания.
При неправильном использовании могут возникать утечки памяти.
В свою очередь, это часто приводит к крашам и проблемам с производительностью.
📖 В этой статье рассмотрены несколько методов управления памятью при использовании замыканий.
😃 iOS Dev
При неправильном использовании могут возникать утечки памяти.
В свою очередь, это часто приводит к крашам и проблемам с производительностью.
📖 В этой статье рассмотрены несколько методов управления памятью при использовании замыканий.
Please open Telegram to view this post
VIEW IN TELEGRAM
Develop in Swift: новая серия уроков от Apple
🧑💻 Вышла новая часть для обучения, с помощью которой можно ближе познакомиться с Xcode и Swift.
Среди проектов, которые вы сможете создать за 5 часов (невероятно, но факт):
1️⃣ Прототип приложения для обмена сообщениями.
2️⃣ Прототип погодного приложения.
3️⃣ Работа с онбордингом.
4️⃣ Добавление кнопок и реализация взаимосвязи внутри приложений.
5️⃣ Работа с Lists и text fields.
😃 iOS Dev
Среди проектов, которые вы сможете создать за 5 часов (невероятно, но факт):
1️⃣ Прототип приложения для обмена сообщениями.
2️⃣ Прототип погодного приложения.
3️⃣ Работа с онбордингом.
4️⃣ Добавление кнопок и реализация взаимосвязи внутри приложений.
5️⃣ Работа с Lists и text fields.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация изменения чисел с помощью модификатора Content Transition
➡️
Например, в случаях, когда есть значение, которое изменяется с течением времени (время на таймере или курс валют).
📖 В этом примере показано, как реализовать такой эффект при нажатии кнопки (как говорится, от прошлого к сложному).
😃 iOS Dev
Content Transition
можно использовать для создания анимированных переходов. Например, в случаях, когда есть значение, которое изменяется с течением времени (время на таймере или курс валют).
📖 В этом примере показано, как реализовать такой эффект при нажатии кнопки (как говорится, от прошлого к сложному).
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
Photo
Какой стиль кода вы используете?
Anonymous Poll
3%
Allman
3%
GNU
1%
Whitesmiths
90%
Kernighan & Ritchie
2%
Ratliff
0%
Horstmann
0%
Pico
2%
Lisp
iOS Dev
Какой стиль кода вы используете?
Зато теперь вы в курсе, что если вдруг кто-то не следует не по стайл-гайду в самом начале своего пути, то возможно он просто приверженец Lisp-стиля (или просто так чувствует).
📖 А вот здесь больше инфы про отступы в разных языках (и не только).
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа в Swift с UIViewRepresentable (как избежать лишних warnings и зацикливания)
При работе со SwiftUI иногда (ладно, на самом деле куда чаще) необходима поддержка
Документация по этим протоколам все еще довольно скудна, и заставить всё это работать бывает непросто).
👩🎓 Chris Eidhof попытался сформулировать некоторые правила и шаблоны их использования.
📖 В этой статье есть полезные советы по коммуникации между SwiftUI и UIKit/AppKit (когда и при каких условиях необходимо выполнять обновление, и какие подводные камни могут ожидать).
😃 iOS Dev
При работе со SwiftUI иногда (ладно, на самом деле куда чаще) необходима поддержка
UIKit
, используя UIViewRepresentable
, NSViewRepresentable
или UIViewControllerRepresentable
. Документация по этим протоколам все еще довольно скудна, и заставить всё это работать бывает непросто).
📖 В этой статье есть полезные советы по коммуникации между SwiftUI и UIKit/AppKit (когда и при каких условиях необходимо выполнять обновление, и какие подводные камни могут ожидать).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация перетаскивания ячеек с помощью lazy grids и stacks
Автор взял за основу этот вариант и добавил возможность кастомного превью.
📖 Целиком решение с кодом можно посмотреть вот в этом посте.
🧑💻 А в нашем канале можно прочитать о решении такой задачи в UIKit.
😃 iOS Dev
Автор взял за основу этот вариант и добавил возможность кастомного превью.
📖 Целиком решение с кодом можно посмотреть вот в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Отслеживание изменений данных в SwiftData с помощью Persistent History Tracking
Мы можем использовать эту возможность для реагирования на изменения (в том числе, например, и в виджетах в той же
ℹ️ Уведомления о подписке и объединение транзакций будут автоматически обрабатываться SwiftData.
Но в некоторых случаях может пригодиться ручная обработка для большей гибкости.
📖 В этой статье на примерах объяснено, как наблюдать за нужными изменениями данных с помощью
➡️ Кстати, ранее я делился масштабным материалом по работе со SwiftData и некоторыми вопросами по использованию.
😃 iOS Dev
Мы можем использовать эту возможность для реагирования на изменения (в том числе, например, и в виджетах в той же
App Group
) и задач пакетной обработки. ℹ️ Уведомления о подписке и объединение транзакций будут автоматически обрабатываться SwiftData.
Но в некоторых случаях может пригодиться ручная обработка для большей гибкости.
📖 В этой статье на примерах объяснено, как наблюдать за нужными изменениями данных с помощью
Persistent History Tracking
в SwiftData
.Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Использование фреймворка AppIntents: создание первого шортката
В iOS 16 был добавлен фреймворк
Одно из преимуществ использования AppIntents — простота создания прототипов.
📖 В этой статье разработчик делится своим опытом и рассказывает, как создать app action для приложения Shortcuts.
😃 iOS Dev
В iOS 16 был добавлен фреймворк
AppIntents
, позволяющий нам интегрировать app actions в систему (например, в Shortcuts, Siri и Spotlight). Одно из преимуществ использования AppIntents — простота создания прототипов.
📖 В этой статье разработчик делится своим опытом и рассказывает, как создать app action для приложения Shortcuts.
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с UIGestureRecognizer: создание, обработка состояний и работа с несколькими одновременно
🗒 Обработка жестов в приложениях на iOS — важнейшая часть разработки.
Касания, повороты или вращения, безусловно, предоставляют важнейший опыт взаимодействия с нашими продуктами для пользователей.
Конечно, иногда нам достаточно только нажатий кнопок (без каких-то размышлений, что распознавать и без учета потенциальных конфликтов).
Но для всех сколь угодно сложных случаев (которых у нас обычно 99% при реализации) поможет
📖 В этом вводном материале можно познакомиться с наиболее частыми ситуациями, касающихся(как вам такая игра слов) обработки жестов пользователей.
😃 iOS Dev
Касания, повороты или вращения, безусловно, предоставляют важнейший опыт взаимодействия с нашими продуктами для пользователей.
Конечно, иногда нам достаточно только нажатий кнопок (без каких-то размышлений, что распознавать и без учета потенциальных конфликтов).
Но для всех сколь угодно сложных случаев (которых у нас обычно 99% при реализации) поможет
UIGestureRecognizer
.📖 В этом вводном материале можно познакомиться с наиболее частыми ситуациями, касающихся
Please open Telegram to view this post
VIEW IN TELEGRAM
Импорт макросов Swift без использования Swift Package Manager
➡️ Макросы Swift, которые появились в Swift 5.9 — отличный способ сократить количество бойлерплейт-кода.
В подавляющем большинстве случаев для поддержки макросов используется SPM, но существуют и другие сценарии.
Например, когда макросы требуются в либах CocoaPods или нужно обфусцировать сорсы приложения (хотя это бывает редко).
📖 Как раз для таких случаев существует опция импорта макросов в проект Xcode в виде бинарника.
😃 iOS Dev
В подавляющем большинстве случаев для поддержки макросов используется SPM, но существуют и другие сценарии.
Например, когда макросы требуются в либах CocoaPods или нужно обфусцировать сорсы приложения (хотя это бывает редко).
📖 Как раз для таких случаев существует опция импорта макросов в проект Xcode в виде бинарника.
Please open Telegram to view this post
VIEW IN TELEGRAM
Оператор guard в Swift, примеры кода и варианты использования
При написании кода мы постоянно задаем различные условия, необходимые для продолжения работы того или иного метода.
⭐️ Необходимыми условиями могут быть либо булево значение (и проверка его на
И конечно, для этого нам всегда поможет
📖 В этой статье разбираются такие ситуации и даётся ответ, когда без guard не обойтись.
Кстати, в обновлении телеги появились кастомные реакции у канала, и если вы хотите увидеть какие-то необычные, то вы знаете, как помочь .
😃 iOS Dev
При написании кода мы постоянно задаем различные условия, необходимые для продолжения работы того или иного метода.
true
), либо работа с опциональными значениями (они не должны быть nil
). И конечно, для этого нам всегда поможет
guard
, однако у нас в арсенале существует и if let
. 📖 В этой статье разбираются такие ситуации и даётся ответ, когда без guard не обойтись.
Please open Telegram to view this post
VIEW IN TELEGRAM
Шаринг токенов между iOS/macOS/watchOS с помощью iCloud Keychain
Конечно, для этого нужно включить саму опцию
📖 А вот тут можно узнать о дополнительных шагах в коде и необходимости дополнительных ключей
Кстати, в канале есть пост и о способах обмена данными между своими приложениями.
😃 iOS Dev
Конечно, для этого нужно включить саму опцию
Keychain Sharing
, при этом не забыв о важности одной и той же Keychain Group
.📖 А вот тут можно узнать о дополнительных шагах в коде и необходимости дополнительных ключей
kSecAttrAccessGroup
и kSecAttrSynchronizable
.Кстати, в канале есть пост и о способах обмена данными между своими приложениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Formatters в Swift: их больше, чем вы думаете!
Если у вас есть небольшой опыт работы с iOS, то вы наверняка использовали и
Но пул форматтеров намного шире. Например, при работе с файлами (особенно, когда требуется красиво показать размер) сложно обойтись без
📖 А в этом материале Винсент делится и другими видами, которые могут пригодиться в нашей работе.
😃 iOS Dev
Если у вас есть небольшой опыт работы с iOS, то вы наверняка использовали и
DateFormatter
, и NumberFormatter
.Но пул форматтеров намного шире. Например, при работе с файлами (особенно, когда требуется красиво показать размер) сложно обойтись без
ByteCountFormatter
📖 А в этом материале Винсент делится и другими видами, которые могут пригодиться в нашей работе.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Pow - библиотека для создания эффектов в iOS-приложениях теперь в открытом доступе
Moving Parts совместно с Emergetools (создателями и других крутых продуктов) приняли решение открыть исходный код библиотеки эффектов Pow.
🤩 К слову, уже 2 100 звёзд на GitHub.
🛠 Посмотреть на доступные эффекты и примеры использования в проектах можно здесь.
😃 iOS Dev
Moving Parts совместно с Emergetools (создателями и других крутых продуктов) приняли решение открыть исходный код библиотеки эффектов Pow.
🛠 Посмотреть на доступные эффекты и примеры использования в проектах можно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
От viewWillAppear к viewIsAppearing: адаптация пользовательского интерфейса
На WWDC23 Apple представила важное дополнение к жизненному циклу UIViewController:
По факту это революционное решение помогает создавать более отзывчивые и динамичные интерфейсы.
📖 На этих несложных примерах можно понять, почему этот момент стратегически важен, и как именно можно использовать его в приложениях.
😃 iOS Dev
На WWDC23 Apple представила важное дополнение к жизненному циклу UIViewController:
viewIsAppearing
. По факту это революционное решение помогает создавать более отзывчивые и динамичные интерфейсы.
📖 На этих несложных примерах можно понять, почему этот момент стратегически важен, и как именно можно использовать его в приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Искусство работы с Corner Radius: пара трюков и хитростей
ℹ️ Работа со скруглениями едва ли не самая распространенная штука при работе над дизайном приложений.
Базовых скруглений легко добиться, но при работе с несколькими составляющими могут возникнуть трудности.
📖 В этой статье David Yang делится некоторыми несложными шагами при работе с таким дизайном.
😃 iOS Dev
Базовых скруглений легко добиться, но при работе с несколькими составляющими могут возникнуть трудности.
📖 В этой статье David Yang делится некоторыми несложными шагами при работе с таким дизайном.
Please open Telegram to view this post
VIEW IN TELEGRAM
Начиная с весны 2024 года, разработчики будут обязаны включать в приложения новые манифесты и подписи для SDK, которые могут влиять на конфиденциальность пользователей.
Подписи будут нужны, даже если SDK (пока список от Apple как на скриншоте выше) включены в качестве зависимостей.
Любая версия и SDK, которые переупаковывают вышеуказанные, также включены в требования.
Для каждого вида данных понадобится словарь
NSPrivacyCollectedDataType
с ключами:NSPrivacyCollectedDataType
, NSPrivacyCollectedDataTypeLinked
, NSPrivacyCollectedDataTypeTracking
и NSPrivacyCollectedDataTypePurposes
.Все значения должны соответствовать этому списку. Если будут указаны иные варианты, то Xcode не сможет корректно генерить отчёт о конфиденциальности.
Please open Telegram to view this post
VIEW IN TELEGRAM