CALayer中的性能滚动和视网膜分辨率图像

时间:2010-12-17 22:02:27

标签: iphone ios

我有一个UIView,它作为UIScrollView中的子视图放置。我有几个由UIView中的图像,文本和按钮组成的子视图。为了获得不错的滚动性能,我在UIView的图层上设置了shouldRasterize = YES。这非常有效,因为性能提高了所以我可以平滑滚动并且不会造成问题,因为我的图形在绘制后是静态的。然而,问题是当我设置shouldRasterize时,光栅化图形在Retina显示屏上模糊且分辨率低。有没有办法让高分辨率图形光栅化以提高性能?

3 个答案:

答案 0 :(得分:122)

似乎我需要将rasterizationScale设置为适当的设备值,如下所示。

myView.layer.rasterizationScale = [[UIScreen mainScreen] scale];

答案 1 :(得分:0)

我遇到了类似的问题 - 带有多个UIView子视图的轮换UIImageView。当我设置rasterizationScale = 2.0时,图像变得更加清晰,但这会导致锯齿重新出现。为了解决这个问题,我创建了一个containerView,其中包含UIViewUIIMageView s(以前是UIView的子视图)并将rasterizationScale = 1.0应用于UIViewrasterizationScale = 2.0UIImageView。现在一切看起来都很不错。

答案 2 :(得分:0)

@Jamie Hamick在Swift 5中的回答:

myView.layer.rasterizationScale = UIScreen.main.scale