Я пытаюсь переместить некоторый пользовательский код рисования из вида в CAShapeLayer
, который затем добавляется в качестве подслоя к исходному виду CALayer
. Это тоже хорошо работает, но при вращении устройства анимация начинает заикаться, т.е. вы просто видите кадр в исходной ориентации, а затем окончательную ориентацию, максимум с одним кадром между ними - совсем не гладко. Анимации выдвижения и выдвижения соответствующих UIViewController
тоже немного дергаются (но не настолько).
Все, что CAShapeLayer
имеет в своем path
, это один CGPathAddRect
, он установлен как opaque
, его opacity
равен 1.0f
, а fillColor
установлен как непрозрачный синий.
Однако при рисовании пути непосредственно в методе представлений drawRect
анимация выполняется плавно. Так что я предполагаю, что это как-то связано с анимацией CAShapeLayer
во время вращения.
Не могли бы вы сказать мне, как избавиться от этих рывков или просто скрыть CAShapeLayer
при анимации? Возврат к простому рисованию CGPath
s напрямую для меня не вариант, потому что я полагаюсь на способность CAShapeLayer
анимировать свой путь (в моих попытках он не анимируется с вращением вида).
/update: это также происходит, когда вращающееся представление UIViewController
s содержит представление с подклассом CAGradientLayer
в качестве его layerClass
(например, представление с градиентным слоем в качестве фона).
Ваше здоровье
Мистер Маг