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