Я рисую как прокручиваемую диаграмму с использованием пользовательского расширения CALayer
с кучей CGContextAddCurveToPoint
звонков в [ MyCustomCALayer drawInContext]
.Привидение в [CALayer drawInContext]
На самом деле я не рисую всю длину графика, я перерисовываю содержимое слоя каждый раз при обновлении UIPanGestureRecognizer
, чтобы отразить новое горизонтальное смещение. Таким образом, я рисую только видимую часть графика, а границы слоя распространяются только на размер экрана.
[ MyCustomCALayer setNeedsDisplay ]
вызывается при изменении данных графика или изменении панорамы панорамирования, что приводит к вызову [ MyCustomCALayer drawInContext]
.
Однако, я получаю это странное ореолы всякий раз, когда я перерисовываю свой слой во время панорамирования. Немного о поиске предполагает, что это может быть implicit animation, вызванный перерисованием содержимого слоя, но я не могу найти окончательный ответ.
Вот что граф выглядит как в состоянии покоя:
А вот во время панорамирования, с Ghosting перерисовкой:
Конечно, когда я делать рисовать весь график и настроить свойство position
слоя для панорамирования не является ореолом, но наличие большого длинного растрового изображения в памяти кажется Bad Thing.
Кто-нибудь видел этот вид ореолов раньше? Если это (как я подозреваю) неявная анимация, как я могу отключить указанную анимацию?
Brilliant, спасибо @joerick, хороший ответ и сделал трюк красиво. –
Следует отметить: actionForKey: также можно использовать для включения неявной анимации для пользовательских свойств вашего подкласса CALayer. Интересный материал! Спасибо за ответ, именно то, что я искал. – Form