CALayer性能与UIImageView性能

时间:2010-07-02 22:02:08

标签: iphone uikit uiimageview calayer

我注意到我在应用程序中对图像所做的一些事情,我可能会使用CALayer属性(即边框,阴影,渐变等)。所以我想知道,一般来说,使用CALayers等更好的想法,或者只是在photoshop中做所有这些东西并使用UIImage(View)来满足我的需求?下拉阴影和东西的滚动性能有点慢,所以我基本上试图找到我能做的每一个小优化。

背景信息:我基本上只是垂直滚动一堆图像。有点像照片应用程序。这是从3.2开始的,所以我可以访问CALayer中的shadow和shouldRasterize属性。

1 个答案:

答案 0 :(得分:15)

了解CALayer阴影的一个关键事项是,默认情况下,它们是从图层的合成Alpha通道渲染出来的;这可能非常慢,特别是当图层旋转或改变大小时。您应该查看shadowPath属性:如果您给Core Animation一个简单的形状,例如一个矩形(UIBezierPath +bezierPathWithRect:,图层的bounds会给你[通过它CGPath属性] CGPathRef你可以在那里使用),你会看到更好的表现。

shouldRasterize也非常有用,特别是对于包含许多不经常更改的子视图的视图;但是,请确保您将图层的rasterizationScale设置为[UIScreen mainScreen].scale,否则您将在iPhone 4等高分辨率屏幕上获得一些令人讨厌的像素化。