使用在drawRect:中创建的内容为视图设置动画(滑动)



我有一些视图,大部分都有内容、纹理和阴影,需要通过将它们滑动到屏幕的另一部分来移动。

这些纹理是在drawRect:中创建的,并且在视图的生命周期中只需要渲染一次(可选地重新着色除外)。

然而,幻灯片有点不稳定,我想这是因为纹理一直在重新绘制。

我想知道直接使用视图CALayer渲染纹理是否有任何价值。这会避免在视图移动时重新渲染纹理吗?

我以前从未使用过CALayer。

谢谢karl

如果覆盖drawRect并像那样使用视图,每次都会重新绘制。您所能做的是创建一个方法,该方法绘制视图一次,并且被调用一次(比方说在init之后),并且不覆盖drawRect。这应该可以解决您的性能问题。

还有一件事,每个视图都有一个层(CALayer)支持,如果你做动画并且想要更好的性能,你应该移动层,而不是在动画期间移动他的视图(UIView)。要访问视图的层,只需执行myView.layer.

希望这有帮助。

最新更新