【发布时间】:2013-01-30 19:23:43
【问题描述】:
所以我有一个滚动视图,一侧有 10 个按钮。总是当我滚动到那个页面时,我会得到很多糟糕的表现。然后我注意到是 CALayer 造成了延迟!我用过
button.layer.cornerRadius = 25;
button.layer.clipsToBounds = YES;
上网一搜,发现可以用
button.layer.shouldRasterize = YES;
它应该工作得更好。但它只是降低了分辨率,并没有提高性能。所以我尝试在 GIMP 中剪掉边缘,但是当我将它们添加到 XCode 时,它们被填充为白色!所以,请告诉我,有没有什么方法可以让我在不表现不佳的情况下通过 CALayer 或不通过 CALayer,这并不重要。任何帮助表示赞赏!
(ps.如果你需要完整的代码或图片,告诉我,我会添加它)
更新:
它只适用于 iPhone 4 的性能不佳,我在我的 iPad Mini 上尝试过,效果很好!
【问题讨论】:
-
当我开始对圆角和阴影图层进行光栅化时,我确实看到了性能的显着提升,所以我不确定你为什么没有。但是,我认为添加以下内容将解决您的分辨率较低的问题:
button.layer.rasterizationScale = [UIScreen mainScreen].scale; -
你没有使用阴影,是吗?如果是,那么最大的性能提升将来自设置阴影路径。
-
感谢您的回答@Mathew,我将添加比例以栅格化并检查我是否使用阴影(我明天会这样做,因为我现在在我的 iPad 上)
-
@Mathew 光栅化比例有效,但我不确定如何禁用阴影。
-
好吧,除非您首先启用阴影,否则您可能不会使用阴影。据我所知,默认情况下它们永远不会打开。但是,相关的图层属性是
layer.shadowOpacity、layer.shadowRadius、layer.shadowOffset、layer.shadowPath,以及您已经在使用的光栅化代码。要禁用阴影,您只需设置shadowOpacity = 0。