首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clipToBounds和masksToBounds性能问题

clipToBounds和masksToBounds性能问题
EN

Stack Overflow用户
提问于 2012-06-15 10:32:31
回答 1查看 7.7K关注 0票数 9

我有UIScrollView和多个对象(UIView组合),其中包含UIImageViews。一些UIImageViews有圆形边框(我使用myImageView.layer.masksToBounds = YES; )。另一些则有矩形边框和部分图像(为此,我在接口生成器中使用Clip subviews属性)。

问题是,当滚动时,我发现clip属性对性能影响很大:

对于iPod touch (第4代)分析结果:

具有启用剪辑属性的

  • (两者或其中之一)--我在滚动
  • 时有大约30 fps和禁用的剪辑属性,我在滚动

时拥有全部60 fp。

我真的需要将一些图像剪辑成圆形边界,另一些则剪辑到矩形边界(以显示部分图像)。那么,我的问题是:有什么方法可以提高性能呢?也许有一些低级的方法(drawRect:或者别的什么),或者在阿尔法面具周围玩会很有用,或者我只是做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 10:56:40

当您有图形化密集的掩码和东西时,提高性能的一个简单而简单的方法(通常是戏剧性的)是在该项的层上将shouldRasterize设置为YES

代码语言:javascript
复制
#import <QuartzCore/QuartzCore.h>

// ...

view.layer.shouldRasterize = YES;

这将使视图的大小变成一个缓冲区,因此不会不断地重新呈现。这将占用每个视图一个额外的内存,因此您应该在滚动时尝试回收/重用视图,类似于表视图所做的工作。

要在视网膜显示器上正确显示行为,还需要为rasterizationScale设置适当的值。

代码语言:javascript
复制
view.layer.rasterizationScale = view.window.screen.scale; // or [UIScreen mainScreen]

我在这方面取得了很大的成功,比如滚动照片画廊,每个项目都有圆角,阴影等等。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11049016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档