Llo*_*d18 9 performance cocoa-touch objective-c uiview ios
我有UIScrollView和其中包含UIImageViews的对象数量(UIView组合).一些UIImageViews有圆形边框(我用myImageView.layer.masksToBounds = YES;它).其他有矩形边框和图像的一部分(我Clip subviews在Interface Builder中使用属性).
问题是我发现剪辑属性在滚动时会对性能产生很大影响:
对于iPod touch(第4代)分析结果:
我真的需要将一些图像剪辑为圆形边界,将其他图像剪切为矩形边界(以显示图像的一部分).所以,这是我的问题:有什么方法可以提高性能?可能有低级别的方法(drawRect:或其他),或者可能是有用的围绕阿尔法掩蔽或我只是做错了什么?
Mik*_*ler 30
当你有图形密集型口罩和事情,一个简单易用的方式来提高性能(很多时候大大)是设置shouldRasterize于YES该项目的层上:
#import <QuartzCore/QuartzCore.h>
// ...
view.layer.shouldRasterize = YES;
Run Code Online (Sandbox Code Playgroud)
这会将视图光栅化为缓冲区,因此不会不断重新渲染.这将占用每个视图的额外内存,因此您应该在滚动时尝试回收/重用视图,类似于表视图的工作方式.
为了在视网膜显示器上正确行为,您还需要为以下项设置适当的值rasterizationScale:
view.layer.rasterizationScale = view.window.screen.scale; // or [UIScreen mainScreen]
Run Code Online (Sandbox Code Playgroud)
我已经取得了很大的成功,例如滚动照片画廊,每个项目都有圆角,阴影等.
| 归档时间: |
|
| 查看次数: |
7538 次 |
| 最近记录: |