Ответ
Основные подходы и инструменты:
| Подход | Инструмент | Описание |
|---|---|---|
| Декларативный | SwiftUI | Современный фреймворк Apple (iOS 13+). Объявление UI как функции состояния. Live Preview для мгновенного отображения. |
| Визуальный редактор | Interface Builder (Storyboard/XIB) | Графическое построение интерфейсов в Xcode. Удобен для статических экранов и прототипирования. |
| Программная верстка | UIKit + Auto Layout | Чистый код через NSLayoutConstraint. Полный контроль и удобство для командной работы. |
| DSL-библиотеки | SnapKit, Then | Упрощают программную верстку, делая код более читаемым. |
Примеры кода:
1. SwiftUI (декларативно):
struct ContentView: View {
@State private var text = ""
var body: some View {
VStack {
TextField("Enter text", text: $text)
Button("Submit") { /* action */ }
.padding()
}
}
}
2. UIKit + Auto Layout (программно):
let label = UILabel()
label.text = "Hello"
view.addSubview(label)
label.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20)
])
3. SnapKit (DSL):
label.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.leading.trailing.equalToSuperview().inset(16)
}
Дополнительные инструменты:
- Для анимаций: Lottie (сложные векторные анимации), UIViewPropertyAnimator (интерактивные анимации).
- Для адаптивности: Size Classes (адаптация под разные размеры экранов).