Вопрос проверяет знание базовых координатных систем UIView и поведения размеров/позиции.
frame — это прямоугольник в системе координат супервью (позиция и размер).bounds — прямоугольник в собственной координатной системе вью (обычно origin=(0,0), размер тот же).
Изменяя bounds.origin, вы как бы «скроллите» содержимое, а frame влияет на расположение самой вью в супервью.
frame:
Описание: CGRect относительно родительского вью.
Используется для установки внешней позиции и размера.
bounds:
Описание: CGRect в собственной системе координат.
По умолчанию origin = .zero.
bounds.size обычно совпадает с frame.size, но bounds.origin может смещаться (для прокрутки).
Пример:
subview.frame = CGRect(x: 20, y: 50, width: 100, height: 100)
// subview находится отступом 20,50 внутри супервью
scrollView.bounds.origin.y = 200
// «скролл» содержимого scrollView на 200 по вертикалиВлияние на отрисовку:
При изменении bounds.origin содержимое смещается визуально.
frame изменение перерисовывает вью в новом месте.
Вывод:frame отвечает за положение в иерархии, а bounds — за локальные координаты и прокрутку содержимого.