【问题标题】:Performance scrolling and retina resolution images in CALayerCALayer 中的性能滚动和视网膜分辨率图像
【发布时间】:2010-12-17 22:02:26
【问题描述】:

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

【问题讨论】:

    标签: iphone ios


    【解决方案1】:

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

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

    【讨论】:

    • 父层是否也需要使用相同的 rasterizationScale 还是没关系?
    【解决方案2】:

    我遇到了类似的问题——旋转的UIView 带有几个UIImageView 子视图。当我设置rasterizationScale = 2.0 时,图像变得更清晰,但这导致锯齿重新出现。为了解决这个问题,我创建了一个 containerView 来保存 UIViewUIIMageViews(以前是 UIView 的子视图)并将 rasterizationScale = 1.0 应用于 UIViewrasterizationScale = 2.0UIImageViews .现在一切看起来都很好。

    【讨论】:

    • 我建议使用 timeuser 建议的更简单的解决方案。
    【解决方案3】:

    @Jamie Hamick 在 Swift 5 中的回答:

    myView.layer.rasterizationScale = UIScreen.main.scale

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 2013-08-20
      • 2013-04-15
      • 1970-01-01
      • 2012-06-19
      相关资源
      最近更新 更多