绕UIView角落的最佳和最快的方式?

时间:2011-12-26 01:06:58

标签: iphone objective-c ios performance calayer

我正在努力重写一个调整(在SpringBoard本身内部运行),所以(原因)平滑,速度和效率对我来说是最重要的事情,因为即使是一点点不必要的延迟也需要远离用户体验。

所以我的问题是如何以最小的延迟来围绕视角。

显而易见的是:

view.layer.cornerRadius = value;
view.layer.masksToBounds = YES;

但是我听说用layer.mask设置CALayer蒙版更快?如果是这样,哪两种解决方案最好?:https://stackoverflow.com/a/4930166/458205

此代码使用遮罩,但遮罩层也使用了cornerRadius,所以这实际上更快吗?

CALayer *maskLayer = [CALayer layer];
maskLayer.cornerRadius = radius;
// set the mask
self.view.layer.mask = maskLayer;

或上述链接的解决方案1,或this answer是否更有效?

我知道我多次引用另一个问题,但是这个问题只是掩盖了两个角落(这会引发一些不同的解决方案)但是我要求最有效的方法让0.6个屏幕大小的视图滚动为尽可能平滑圆角(如此图片)。 CardSwitcher Screenshot

2 个答案:

答案 0 :(得分:3)

您需要设置rasterizationScale以及view.layer.shouldRasterize。

我通常这样做:

view.layer.shouldRasterize = YES;
view.layer.rasterizationScale = [[UIScreen mainScreen] scale];

如果您没有设置rasterizationScale,它将始终默认为光栅化的比例为1(在这种情况下为非视网膜)。

对我而言,这通常会使我的滚动表现与UITableView相同。

答案 1 :(得分:1)

第一个片段效率更高,因为圆角本身就是一个蒙版。 提高圆角的使用性能: view.layer.shoudRasterize = YES;