【问题标题】:iOS text rendering after zoom-in放大后的 iOS 文本渲染
【发布时间】:2012-06-27 07:08:34
【问题描述】:

我编写了一个函数来使用 CGAffineTransformScale 放大 UIView。放大 2 倍后,所有文字看起来都非常模糊。如果图像一开始就具有更高的分辨率,则图像是可以的。有没有办法在放大后以适当的分辨率重新渲染所有文本?

编辑: 我找到了解决问题的部分方法: http://markpospesel.wordpress.com/2012/04/03/on-the-importance-of-setting-contentscalefactor-in-catiledlayer-backed-views/

  • (void)didMoveToWindow { self.contentScaleFactor = 2.0; }

通过在 UIView 类别中添加上述方法,UILabel、UIButton 和大多数其他视图现在以高分辨率呈现。但是,这不会影响 UITextView 或 UIWebView。这两个视图中的任何一个中的文本仍然是模糊的。

那么新的问题是,一个 UITextView 或 UIWebView 如何在放大后以高分辨率重绘?

【问题讨论】:

    标签: ios uiview render cgaffinetransform text-rendering


    【解决方案1】:

    是的。您可以在 UIView 上设置 contentScaleFactor 以使其以更高分辨率呈现其背景视图。不过,在视网膜设备上要小心;你想确保你的新 contentScaleFactor 至少是你的 [[UIScreen mainScreen] scale] 。 (我会在你的动画之前设置它,所以它很流畅。)

    编辑:为了清楚起见,您可能需要在 2 倍缩放示例中将文本视图本身的 contentScaleFactor 设置为 [[UIScreen mainScreen] scale] * 2

    【讨论】:

    • 感谢您的回答。我仍然很困惑。我应该设置父视图还是子视图的 contentScaleFactor ?我尝试设置父视图,它没有工作。如果这不起作用,设置直接子视图也不起作用,因为带有文本的实际视图可能在视图层次结构中很深,所以子视图仍然被认为是它的祖先。
    • 不幸的是,您需要在(深层)文本视图本身上设置它,在它们所在的层次结构中的任何位置,因为正是这些视图将文本实际呈现为像素。跨度>
    • 谢谢杰西!真的帮了很多忙。
    • 不客气。很高兴接受我的回答,如果它可以帮助您解决问题(并且会鼓励其他人在未来帮助您)。
    • 我已经扩展了这个问题。我想为你的回答投票,但我没有足够的声誉:(
    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多