Frame vs Bounds в iOS

В iOS и macOS frame и bounds – это два различных прямоугольника, используемых для определения расположения и размеров визуальных элементов в пользовательском интерфейсе. Однако они имеют разные координатные системы и значения.

  1. frame:
    • frame определяет расположение и размеры визуального элемента относительно его родительского представления (супервью).
    • Координаты frame измеряются в системе координат родительского представления.
    • Изменение frame элемента также изменяет его положение и размеры на экране.
    • Например, если вы устанавливаете frame.origin.x равным 100, это означает, что элемент будет сдвинут вправо относительно левого края его родительского представления на 100 пикселей.
  2. bounds:
    • bounds определяет расположение и размеры визуального элемента относительно его собственной координатной системы.
    • Координаты bounds измеряются относительно верхнего левого угла самого элемента.
    • Обычно bounds.origin устанавливается в (0, 0), так что точка начала координат находится в верхнем левом углу элемента.
    • Изменение bounds не изменяет фактическое положение элемента на экране, но может изменить то, как его содержимое рисуется внутри этого элемента.
    • Например, если установить bounds.origin.x равным 100, это сдвинет содержимое элемента влево на 100 пикселей от его обычного положения.

Итак, основное различие между frame и bounds заключается в том, что frame определяет положение и размеры элемента относительно его родительского представления, в то время как bounds определяет положение и размеры элемента относительно его собственной координатной системы.