User-Defined в iOS проекте
Настройка User-Defined для того, чтобы использовать разный код/конфигурацию на проде и дебаге:
👉 Добавляем User-Defined значения. Пример на скринах
👉 А затем для удобства использования создаем класс со статическим значением, например:
#swift
Настройка User-Defined для того, чтобы использовать разный код/конфигурацию на проде и дебаге:
👉 Добавляем User-Defined значения. Пример на скринах
👉 А затем для удобства использования создаем класс со статическим значением, например:
class ApplicationConfig {
static var serverURL: URL? {
let urlString = Bundle.main.object(forInfoDictionaryKey: "serverURL") as? String ?? ""
return URL(string: urlString)
}
}
#swift
👍7👎1
Создаем виджеты для экрана блокировки на SwiftUI
Реализовать виджет для экрана блокировки несложно, поскольку его API использует тот же код, что и виджеты домашнего экрана. Нужно добавить обработку кейсов accessoryInline, accessoryCircular, accessoryCorner, accessoryRectangular для разных видов виджетов на iOS, WatchOS
#swiftUI #iOS16
Реализовать виджет для экрана блокировки несложно, поскольку его API использует тот же код, что и виджеты домашнего экрана. Нужно добавить обработку кейсов accessoryInline, accessoryCircular, accessoryCorner, accessoryRectangular для разных видов виджетов на iOS, WatchOS
#swiftUI #iOS16
🔥9👎1
Apple застолбила бренды для своих гарнитур смешанной реальности
Apple начала процесс регистрации брендов и товарных знаков: Reality One, Reality Pro, Reality Processor
#apple
Apple начала процесс регистрации брендов и товарных знаков: Reality One, Reality Pro, Reality Processor
#apple
🔥7👍1👎1
Handling multiple caches in App (4 мин)
Вариант имплементации кэширования для разных типов данных:
👉 Слой utils состоит из сущностей, которые реализуют протоколы для получения данных
👉 Assets Manager - посредник между слоем utils и хранилищами. Главной целью является сопоставление типа кэширования и хранилища
👉 На уровне Caching Layer располагаются все хранилища. Работа происходит только с сырыми данными абстрактно от типа
#architecture
Вариант имплементации кэширования для разных типов данных:
👉 Слой utils состоит из сущностей, которые реализуют протоколы для получения данных
👉 Assets Manager - посредник между слоем utils и хранилищами. Главной целью является сопоставление типа кэширования и хранилища
👉 На уровне Caching Layer располагаются все хранилища. Работа происходит только с сырыми данными абстрактно от типа
#architecture
👍2👎1🔥1
SwiftUI, How to create BlurEffect. Introducing 2 ways
Два способа создания эффекта blur в помощью SwiftUI:
👉 С помощью модификатора
👉 Через UIViewRepresentable, если нужно больше возможностей для кастомизации
#swiftUI
Два способа создания эффекта blur в помощью SwiftUI:
👉 С помощью модификатора
.blur
👉 Через UIViewRepresentable, если нужно больше возможностей для кастомизации
#swiftUI
👍4👎1
Готов ли Kotlin Multiplatform к проду на iOS?
Kotlin Multiplatform уже несколько лет широко используется в продакшен приложениях. Насколько готов Kotlin Multiplatform к проду на iOS? Несмотря на сложности с отладкой, отсутствие поддержки аргументов по умолчанию, исчерпывающих перечислений (enum'ов), Codable и некоторые другие проблемы, KMP можно разворачивать со следующими условиями:
👉 Используйте его с осторожностью: нет необходимости идти ва-банк с KMP. Можно попробовать обкатать на небольшом модуле
👉 Общие компоненты: скорее всего, ваша цель использования KMP состоит в том, чтобы обмениваться компонентами между платформами, поэтому начните с них
👉 Помните о версиях: JetBrains поддерживает сайт со стабильностью Kotlin Components, некоторые компоненты Kotlin/Native являются бета-версиями. Определите, достаточно ли стабильности KMP для вашей организации
#crossplatform
Kotlin Multiplatform уже несколько лет широко используется в продакшен приложениях. Насколько готов Kotlin Multiplatform к проду на iOS? Несмотря на сложности с отладкой, отсутствие поддержки аргументов по умолчанию, исчерпывающих перечислений (enum'ов), Codable и некоторые другие проблемы, KMP можно разворачивать со следующими условиями:
👉 Используйте его с осторожностью: нет необходимости идти ва-банк с KMP. Можно попробовать обкатать на небольшом модуле
👉 Общие компоненты: скорее всего, ваша цель использования KMP состоит в том, чтобы обмениваться компонентами между платформами, поэтому начните с них
👉 Помните о версиях: JetBrains поддерживает сайт со стабильностью Kotlin Components, некоторые компоненты Kotlin/Native являются бета-версиями. Определите, достаточно ли стабильности KMP для вашей организации
#crossplatform
👍7👎2
Документация Apple по Dynamic Island
Как добавить Live Activities в приложение:
👉 Создаем widget extension для приложения (WidgetKit, Creating a Widget Extension)
👉 Добавляем
👉 Добавляем структуру ActivityAttributes чтобы описать статический и динамический контент Live Activity
👉 Создаем ActivityConfiguration на основе ActivityAttributes
👉 Конфигурируем начало, обновление и конец Live Activity
Доступно с Xcode 14.1
#iOS16
Как добавить Live Activities в приложение:
👉 Создаем widget extension для приложения (WidgetKit, Creating a Widget Extension)
👉 Добавляем
Supports Live Activities: YES
в Info.plist👉 Добавляем структуру ActivityAttributes чтобы описать статический и динамический контент Live Activity
👉 Создаем ActivityConfiguration на основе ActivityAttributes
👉 Конфигурируем начало, обновление и конец Live Activity
Доступно с Xcode 14.1
#iOS16
🔥15👎1
AttributedString, a better way to handle attributed strings in iOS 15 (2 мин)
С iOS 15 на замену NSAttributedString приходит AttributedString. В скринах пример кода для цветной строки с подчеркиванием, выделение range и markdown
#swift
С iOS 15 на замену NSAttributedString приходит AttributedString. В скринах пример кода для цветной строки с подчеркиванием, выделение range и markdown
#swift
👏5👎1
Data flow in SwiftUI (4 мин)
На схеме случаи использования Binding, ObservableObject, StateObject, ObservedObject, EnvironmentObject
#swiftUI
На схеме случаи использования Binding, ObservableObject, StateObject, ObservedObject, EnvironmentObject
#swiftUI
👍5👎1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI Advanced Animation: Morphing Shapes (4 мин)
Если две стадии анимации представлены объектами, соответствующими протоколу VectorArithmetic, SwiftUI может высчитать промежуточные состояния и отрисовать переход.
Концептуально создание пузырька из лавовой лампы выглядит так:
👉 Создаем AnimatableVector: VectorArithmetic. Библиотека Accelerate используется для быстрых вычислений
👉 Делим круг на несколько дуг, радиус каждой из которых будет меняться независимо от других (пример в гифке)
#swiftUI
Если две стадии анимации представлены объектами, соответствующими протоколу VectorArithmetic, SwiftUI может высчитать промежуточные состояния и отрисовать переход.
Концептуально создание пузырька из лавовой лампы выглядит так:
👉 Создаем AnimatableVector: VectorArithmetic. Библиотека Accelerate используется для быстрых вычислений
👉 Делим круг на несколько дуг, радиус каждой из которых будет меняться независимо от других (пример в гифке)
#swiftUI
🔥6👎1
How to Show/hide whitespace characters in Xcode
Если вы работаете с CSV, YAML или ваш Linter ругается на пробелы, на скрине небольшой лайфхак, как их отобразить в Xcode
#xcode
Если вы работаете с CSV, YAML или ваш Linter ругается на пробелы, на скрине небольшой лайфхак, как их отобразить в Xcode
#xcode
🔥6👎1
What’s New in SwiftUI 4 for iOS 16 (12 мин)
Что нового в SwiftUI iOS 16?
🔥 SwiftUI Charts - компонент для графиков
🔥 Resizable Bottom Sheet - нижняя шторка
🔥 MultiDatePicker - выбор дат
🔥 NavigationStack и NavigationSplitView для улучшенной навигации
🔥 ShareLink - "поделиться"
🔥 Table for iPadOS - таблицы на iPad
🔥 Expandable Text Field - поле для ввода текста
🔥 Gauge - отображение прогресса
🔥 ViewThatFits - автоматическое вычисление размера для верстки
🔥 Gradient and Shadow - градиенты и тени
🔥 Grid API - верстка для сетки
🔥 AnyLayout and Layout Protocol - кастомные лейауты
#swiftUI
Что нового в SwiftUI iOS 16?
🔥 SwiftUI Charts - компонент для графиков
🔥 Resizable Bottom Sheet - нижняя шторка
🔥 MultiDatePicker - выбор дат
🔥 NavigationStack и NavigationSplitView для улучшенной навигации
🔥 ShareLink - "поделиться"
🔥 Table for iPadOS - таблицы на iPad
🔥 Expandable Text Field - поле для ввода текста
🔥 Gauge - отображение прогресса
🔥 ViewThatFits - автоматическое вычисление размера для верстки
🔥 Gradient and Shadow - градиенты и тени
🔥 Grid API - верстка для сетки
🔥 AnyLayout and Layout Protocol - кастомные лейауты
#swiftUI
🔥4👎1