Найти в Дзене
Что такое LocalizedStringKey
? LocalizedStringKey — это структура в SwiftUI, которая: - Автоматически определяет, нужно ли локализовать переданную строку - Ищет соответствующий перевод в файлах Localizable.strings - Позволяет использовать...
1 неделю назад
Как работает модификатор .hidden() и чем он отличается от .opacity(0
) .hidden() • .hidden() скрывает View, но оно продолжает занимать место в макете (layout). • View с .hidden() не кликабельна, не принимает фокус и недоступна для взаимодействия. • Тем не менее, макет строится так, как будто элемент “есть”, но его не видно. Как работает .opacity(0) • .opacity(0) делает View полностью прозрачной (невидимой), но элемент продолжает участвовать в layout и, главное, остаётся интерактивным...
2 недели назад
Вдруг вы не знали
: Вы можете передавать в метод print несколько параметров через запятую. В нашем примере обе строки делают одно и тоже: выводят в консоль сообщение об ошибке и саму ошибку. Пользуйтесь
2 недели назад
Что такое Resolver
Resolver — это легковесный DI-контейнер, библиотека для регистрации и получения сервисов/объектов по типу или имени. • помогает строить модульные, тестируемые и гибкие приложения, разделяя создание зависимостей и их использование. • в рамках Dependency Injection контейнер хранит фабрики и экземпляры сервисов, а через методы вроде register() и resolve() позволяет получить требуемый объект. • позволяет регистрировать разных поставщиков сервисов (например: сетевой слой, менеджер данных, бизнес-логика). • упрощает работу с скоупами: singleton, transient (уникальный экземпляр), weak и др...
3 недели назад
Как использовать @FocusState & .focused
() @FocusState - обертка, которая управляет фокусированием на элементе приложения, с котором выполняется действие. То есть, грубо говоря, когда у пользователя курсор внутри TextField и он взаимодействует именно с этим элементом @FocusState - свойство равно id этого элемента. Модификатор .focused() назначается...
3 недели назад
Хорошей практикой является задание id элементов в отдельном перечислении, назначении для @FocusState - свойства типа этого перечисления и
вызов id через точку (.userName): enum FocusedField { case userName } И последнее, что нужно упомянуть по поводу FocusState: для того, чтобы пользователь мог интуитивно понятно скрыть клавиатуру, нужно предусмотреть, чтобы нажатие в любой другой части экрана за исключением TextField убирало с него фокус. Для этого нужно иметь кликабельную область, в нашем примере мы создаём VStack на весь экран с фоном (без фона VStack будет не кликабельный) и назначаем модификатор onTapGesture, который убирает фокусирование с TextField...
3 недели назад
Как передать в init @Binding var
В SwiftUI в инициализаторе нельзя принимать свойство с аннотацией @Binding напрямую, property wrapper нужно развернуть с помощью типа Binding<Bool> . То есть, инициализатор принимает параметр типа Binding<Bool> , а уже внутри структуры или класса оборачивают его в @Binding ...
3 недели назад
Продолжаем разговор про фреймворки реактивного программирования
ReactorKit — это фреймворк для Swift, представленный в 2017 году, реализующий реактивную однонаправленную архитектуру (Unidirectional Architecture) с использованием RxSwift. Он помогает разделять пользовательские действия, бизнес-логику и состояние экрана через потоки событий, чтобы построение и сопровождение сложных UI было максимально прозрачным. • Архитектура ReactorKit основана на паттернах Flux и MVVM, сочетающихся с реактивным программированием: пользовательские действия (Action) из View становятся событиями, которые обрабатываются реактором, а изменения состояния (State) передаются обратно View...
4 недели назад