Проблема понимания CALayer Geometry.Нужна помощь - PullRequest
4 голосов
/ 15 марта 2012

Я пытаюсь понять геометрию калибратора, но у меня возникли проблемы с пониманием этого

  • Позиция (мне понятно)

  • Bounds (Apple Docs говорит) Свойство bounds - это CGRect, который предоставляет размер слоя (bounds.size) и источник (bounds.origin).

Источник границ используется в качестве источника графического контекста при переопределении методов рисования слоя.

Я не получил эту точку в отношении границ.

  • Frame (Apple Docs говорит)

Слои имеют неявную рамку, которая является функцией позиции,bounds, anchorPoint и свойства преобразования.Установка нового прямоугольника рамки соответственно изменяет свойства позиции и границ слоя, но сам кадр не сохраняется.Когда указывается новый прямоугольник рамки, источник границ не нарушается, а размер границ устанавливается равным размеру рамки.Положение слоя установлено в правильное положение относительно точки привязки.Когда вы получаете значение свойства фрейма, оно вычисляется относительно свойств position, bounds и anchorPoint.

, но это намного сложнее и отличается от этого слайд лекций Стэнфордского университета 19

  • AnchorPoint Это в итоге игра с границами ... заставляет мою голову вращаться

Нужна помощь.

Спасибо, С уважением.

1 Ответ

3 голосов
/ 15 марта 2012

Каждый вид имеет свою собственную систему координат.

Система координат любого вида имеет свое начало в (0,0).Таким образом, границы любого представления - это «границы» этой системы координат, т.е.(0, 0, ширина, высота).

Положение любого вида рассчитывается на основе системы координат родительского вида или superview.Это кадр любого вида, который, следовательно, будет (x, y, ширина, высота), где x и y обозначают левый и верхний или положение верхнего левого угла в системе координат родителя.

Документация ios объясняет это с помощью этого изображения

This should explain things much better

И для последнего, так как AnchorPoint находится "внутри" представления, он представлен в представлении со-координатная система и поэтому должна использовать границы, как и свойство center.

Это верно и для CALayer, где границы слоев определены в их собственной системе координат и их фреймахопределяются их суперпредставлениями.Существует довольно много различий, некоторые из которых являются прямыми, например, слои имеют гораздо более глубокий контроль, благодаря которому вы можете установить zordering и иметь опорную точку для работы с преобразованиями и т. Д. Некоторые из них тонкие, как, например, свойство frame объекта CALayer:не анимируемый (т.е. изменение его в анимационном блоке не имеет никакого эффекта).

И я предлагаю вам попробовать меньшие программы, чтобы понять различия, в дополнение к простой попытке получить все из книги или двух, или, если на то пошло, даже ТАК.

...