CAShapeLayer замедляет вращение интерфейса - PullRequest
0 голосов
/ 09 января 2010

Я пытаюсь переместить некоторый пользовательский код рисования из вида в CAShapeLayer, который затем добавляется в качестве подслоя к исходному представлению CALayer. Это также хорошо работает, но при вращении устройства анимация начинает заикаться, например, Вы просто видите рамку в исходной ориентации, а затем в окончательной ориентации, с максимум одним кадром между ними - совсем не гладко. Анимации слайдов и слайдов соответствующих UIViewController тоже немного отрывистые (но не очень).

Все значения CAShapeLayer в path равны одному CGPathAddRect, для него установлено значение opaque, opacity равно 1.0f, а для fillColor установлено непрозрачное синее.

При рисовании траектории непосредственно в методе drawRect видов анимация выглядит гладкой . Поэтому я полагаю, что это как-то связано с анимацией CAShapeLayer во время вращения.

Не могли бы вы сказать мне, как избавиться от этого рывка или просто скрыть CAShapeLayer при анимации? Возвращение только к рисованию CGPath s не является для меня вариантом, потому что я полагаюсь на способность CAShapeLayer анимировать его путь (он не анимируется в моих попытках с поворотом вида).

/ update: это также происходит, когда вращающееся представление UIViewController s содержит представление с подклассом CAGradientLayer в качестве layerClass (например, представление с градиентным слоем в качестве фона).

Приветствия

MrMage

Ответы [ 2 ]

0 голосов
/ 22 сентября 2010

Похоже, эта проблема была исправлена ​​Apple в iOS 4.

0 голосов
/ 12 января 2010

Ну, есть свойство скрытия, вы можете скрыть CAShapeLayer, а затем сделать анимацию. Затем вызовите метод, который скрывает CAShapeLayer, чтобы вы не видели его во время вращения, а затем он должен быть гладким

...