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