Как предотвратить перерисовку CALayer при изменении его привязки? - PullRequest
0 голосов
/ 07 ноября 2010

У меня есть CALayer с пользовательским методом рисования, который я добавил к базовому слою моего представления. Я установил для needsDisplayOnBoundsChange значение NO. Однако, когда я изменяю размер рамки родительского представления, drawInContext: слоя вызывается непрерывно. Я бы хотел, чтобы содержимое масштабировалось во время изменения размера. Любые подсказки?

1 Ответ

1 голос
/ 08 ноября 2010

Интересно, у меня есть случай, когда у меня есть CALayer, который корректно масштабирует его содержимое, пока я не вызову setNeedsDisplay для него, чтобы перерисовать его содержимое. Одна вещь, которая может отличаться, заключается в том, что в моем случае слой рисуется его делегатом, а не подклассом CALayer. Другая вещь, которая может отличаться, заключается в том, что это на iOS, а не на OSX (я не знаю, что вы используете в этом случае). Возможно, что между подклассами и делегированными нарисованными слоями и / или iOS и OSX могут быть различия в поведении.

Еще одна вещь, на которую следует обратить внимание, это то, что needsDisplayOnBoundsChange задокументировано как NO по умолчанию, поэтому не нужно его устанавливать. Я специально не устанавливаю needsDisplayOnBoundsChange на свой слой.

Вы можете попробовать использовать делегата для рисования, чтобы увидеть, имеет ли это значение. Обратите внимание, что UIView не может быть делегатом для CALayer. В моем случае я сделал простой объект делегата, который перенаправляет вызов отрисовки на мое представление.

...