我有UIScrollView和多个对象(UIView组合),其中包含UIImageViews。一些UIImageViews有圆形边框(我使用myImageView.layer.masksToBounds = YES; )。另一些则有矩形边框和部分图像(为此,我在接口生成器中使用Clip subviews属性)。
问题是,当滚动时,我发现clip属性对性能影响很大:
对于iPod touch (第4代)分析结果:
具有启用剪辑属性的
时拥有全部60 fp。
我真的需要将一些图像剪辑成圆形边界,另一些则剪辑到矩形边界(以显示部分图像)。那么,我的问题是:有什么方法可以提高性能呢?也许有一些低级的方法(drawRect:或者别的什么),或者在阿尔法面具周围玩会很有用,或者我只是做错了什么?
发布于 2012-06-15 10:56:40
当您有图形化密集的掩码和东西时,提高性能的一个简单而简单的方法(通常是戏剧性的)是在该项的层上将shouldRasterize设置为YES:
#import <QuartzCore/QuartzCore.h>
// ...
view.layer.shouldRasterize = YES;这将使视图的大小变成一个缓冲区,因此不会不断地重新呈现。这将占用每个视图一个额外的内存,因此您应该在滚动时尝试回收/重用视图,类似于表视图所做的工作。
要在视网膜显示器上正确显示行为,还需要为rasterizationScale设置适当的值。
view.layer.rasterizationScale = view.window.screen.scale; // or [UIScreen mainScreen]我在这方面取得了很大的成功,比如滚动照片画廊,每个项目都有圆角,阴影等等。
https://stackoverflow.com/questions/11049016
复制相似问题