Size Classes (классы размеров) — это система классификации доступного пространства на экране по горизонтали и вертикали, используемая для создания адаптивных интерфейсов. Они представляют собой абстракцию над физическими размерами устройств.
Существует два типа Size Classes, каждый с двумя вариантами:
Устройство | Ориентация | Горизонтальный | Вертикальный |
---|---|---|---|
iPhone (кроме Max) | Портретная | Compact | Regular |
iPhone (кроме Max) | Ландшафтная | Compact | Compact |
iPhone Max | Ландшафтная | Regular | Compact |
iPad | Любая | Regular | Regular |
Адаптивные интерфейсы:
Универсальные storyboards:
// Пример проверки size class в коде
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.horizontalSizeClass == .compact {
// Настройка для компактного режима
} else {
// Настройка для регулярного режима
}
}
// Пример программной адаптации
func setupViews() {
if traitCollection.verticalSizeClass == .compact {
stackView.axis = .horizontal
} else {
stackView.axis = .vertical
}
}
// Реакция на изменение size class
override func willTransition(to newCollection: UITraitCollection,
with coordinator: UIViewControllerTransitionCoordinator) {
super.willTransition(to: newCollection, with: coordinator)
coordinator.animate(alongsideTransition: { _ in
self.updateLayout(for: newCollection)
})
}
Size Classes — это мощная система для создания адаптивных интерфейсов, позволяющая единообразно работать с разными размерами экранов и ориентациями устройств. Они абстрагируют физические размеры устройств, фокусируясь на доступном пространстве для контента, что особенно важно в эпоху разнообразных iOS-устройств и многозадачности на iPad.