在CGAffineTransformMakeScale之后校正模糊文本

时间:2012-04-23 14:43:39

标签: ios cgaffinetransform cgaffinetransformscale

我在视图上有多个UIL用户视图。 (全部在Interface Builder中构建)。

当你捏住屏幕时,我正试图创建一个“较小”的视图副本。

要做到这一点,我申请:

view.transform = CGAffineTransformMakeScale(.5, .5);

然后我也调整了视野。

问题是在转换之后,我所有UILabel中的文本都变得“模糊”。它不会保持像素完美,因为它处于全尺寸视图中。

有没有办法在转换后增加标签的像素化?

1 个答案:

答案 0 :(得分:9)

将变换应用于UIView或CALayer仅缩放该图层或视图的栅格化位图。这可能导致生成的UI元素模糊,因为它们不会以新的比例重新呈现。

如果你真的希望你的文字或图像在新的比例因子上清晰,你需要手动调整它们的大小并使它们重绘而不是应用变换。我用this answer中的UIScrollView中托管的UIView描述了一种方法。

您可以创建一个遍历一个主视图的视图层次结构的方法,递归读取每个子视图的帧,缩小它,然后强制重绘其内容。变换仍然可以用于交互式操作或动画,但是您可以在操作或动画结束时触发完全手动缩放和重绘。