objective-c – clipToBounds和masksToBounds的性能问题
发布时间:2020-12-16 05:53:39 所属栏目:百科 来源:网络整理
导读:我有UIScrollView和数量的对象(UIView组合)与其中的UI ImageViews.一些UI ImageViews有圆形边框(我使用myImageView.layer.masksToBounds = YES;为此).其他具有矩形边框和其中的一部分图像(我在Interface Builder中使用Clip subviews属性). 问题是我发现剪辑
我有UIScrollView和数量的对象(UIView组合)与其中的UI
ImageViews.一些UI
ImageViews有圆形边框(我使用myImageView.layer.masksToBounds = YES;为此).其他具有矩形边框和其中的一部分图像(我在Interface Builder中使用Clip subviews属性).
问题是我发现剪辑属性在滚动时强烈地影响了性能: 对于iPod touch(第4代)分析结果: >启用剪辑属性(两者或其中之一)滚动时,我有大约30 fps 我真的需要剪辑一些图像到圆形边框和其他矩形边界(以显示图像的一部分).所以,这是我的问题:有什么方法来提高性能?可能有低级别的方法来做(drawRect:或某事),或者可能是玩阿尔法掩护或我只是做错了吗? 解决方法
当你有图形密集的面具和东西时,一个简单而简单的方法来提高性能(通常是时间性的)是在该项目的图层上设置ShouldRasterize为YES:
#import <QuartzCore/QuartzCore.h> // ... view.layer.shouldRasterize = YES; 这将使视图大小化为缓冲区,因此不会不断重新呈现.这将为每个视图占用额外的内存,所以您应该在滚动时真正尝试回收/重用视图,类似于表视图. 对于视网膜显示器上的正确行为,您还需要为rasterizationScale设置一个适当的值: view.layer.rasterizationScale = view.window.screen.scale; // or [UIScreen mainScreen] 我已经取得了巨大的成功,就像滚动照片画廊,每个项目都有圆角,阴影等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |