2

我已经为这个问题苦苦挣扎了好几个星期了。无论如何,CALayer的很糟糕。它们会造成如此多的延迟,让我的 UI 看起来更糟。

几乎我有一个简单的 UITableView,我已经最大限度地提高了效率,滚动时的所有延迟都来自 3 行代码:

CALayer *imageLayer2 = [cell.imageView layer];
[imageLayer2 setMasksToBounds:YES];
[imageLayer2 setCornerRadius:10.0];

我试图将 setMaskToBounds 设置为 NO,但是没有圆角应用于我的 UIImageView。出于某种奇怪的原因,iPad 上的这个问题似乎比 iPhone 上的更糟,但我现在只能坚持寻找解决方法。此代码也在我的 cellForRowAtIndexPath 中,但仅在需要新单元格时才执行,因此并不总是调用它。

无论如何,你建议我做什么而不是使用 CALayers 来摆脱这种滞后?

谢谢!

4

3 回答 3

1

我认为这里的问题是因为每次cellForRowAtIndex调用时你都在这样做。我的建议是,已经使用蒙版和圆角半径存储图像,当您再次真正需要时,您要求模型检索图像而不是再次计算它。,cellForRowAtIndex是一个明智的选择,您应该避免在其中进行昂贵的操作。

于 2012-06-04T12:41:58.530 回答
1

我发现如果你使用 UIImage 的 CGImageRef,它比直接使用 UIImage 快得多。

试试这个:

CALayer *imageLayer2.contents = (id)[cell.imageView image].CGImage;
[imageLayer2 setMasksToBounds:YES];
[imageLayer2 setCornerRadius:10.0];

Although I would actually get rid of the ImageView completely and just deal with CALayers and UIImages (Assuming you don't care about accessibility)

于 2013-03-19T03:40:59.233 回答
0

好吧,如果您愿意弄乱图像本身,则可以将其设为圆形,然后按原样使用,要将矩形图像更新为圆形矩形,请查看此答案 如何将方形图像掩蔽成图像iPhone SDK中的圆角?

于 2012-06-03T19:57:30.433 回答