Назад к вопросам
Junior
143
questionbank
В чём отличие между frame и bounds в iOS?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
frame— прямоугольник представления относительно его суперпредставления или координатной системы родителя. Он определяет позицию (origin) и размер (size) представления в координатах родителя.bounds— прямоугольник представления относительно его самого. Он определяет позицию (origin) и размер (size) представления в его собственной координатной системе. По умолчаниюoriginдляbounds(то есть точка (0,0) в собственной системе координат представления) совпадает с верхним левым углом представления. Изменениеbounds.originприводит к скроллингу содержимого представления без изменения положения самого представления в родительском представлении.
Основные отличия:
| Свойство | Координатная система | Изменение Size влияет на | Изменение Origin влияет на |
|---|---|---|---|
frame |
Суперпредставления | Размер представления | Положение представления относительно суперпредставления |
bounds |
Собственная система представления | Размер представления (самого) | Скроллинг содержимого представления относительно его границ |
Пример:
- Установка
frame.originизменяет положение представления на экране. - Установка
bounds.originсдвигает содержимое представления внутри него.
// ContentView - дочернее представление
// Superview - родительское представление
// Изменение положения ContentView на экране
contentView.frame.origin = CGPoint(x: 50, y: 100)
// Скроллинг содержимого ContentView
// Предполагается, что contentView имеет размеры больше его содержимого
// и содержимое расположено в его собственной системе координат
contentView.bounds.origin = CGPoint(x: 10, y: 20)