【问题标题】:Pinching zoom a custom UIView: lines and text are pixelate, needs to be re-rasterized捏缩放自定义 UIView:线条和文本像素化,需要重新光栅化
【发布时间】:2012-11-04 15:20:42
【问题描述】:

我有一个自定义 UIView。在这个视图中,我重写了 drawRect 来绘制一些路径和一些文本。 当检测到点击时,视图正在放大

 - (void)tapDetected:(UITapGestureRecognizer *)sender {
     float zoom = 3.;
     sender.view.transform = CGAffineTransformScale(sender.view.transform, zoom, zoom);
     ...
 }

缩放工作正常,但是当我放大时线条和文本会变得像素化。我希望线条宽度和文本大小保持不变,即重新光栅化,所以我在上面的末尾插入了一个 setNeedsDisplay方法,但这没有效果,不工作。

有什么帮助吗?

谢谢。

【问题讨论】:

    标签: ios uiview pinchzoom


    【解决方案1】:

    尝试更改相关层的contentScale。这对我的路径有效。

    【讨论】:

    • 哪一层?我不认为我有层。
    • 每个视图都有一个层...没有它,您将无法显示内容。 view.layer
    【解决方案2】:

    我的地图查看器遇到了类似的问题,所以我制作了一个独立的演示项目。放大时我得到了非常重的抗锯齿。基本上,要在放大时重新光栅化,你必须像这样使用rasterizationScale

        sublayer.rasterizationScale = scale;
        sublayer.contentsScale = scale;
    

    示例项目和自述文件在这里:https://bitbucket.org/robvanderveer/scrollviewdemo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      相关资源
      最近更新 更多