Назад к вопросам
Junior
142
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)