在CGAffineTransformMakeScale之后校正模糊文本

我有多个视图,视图上有很多UILabel。 (全部在Interface Builder中构建)。

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

要做到这一点,我申请:

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

然后我也调整了视野。

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

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

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

如果您确实希望文本或图像在新的比例因子下清晰,则需要手动调整它们的大小并使它们重绘而不是应用变换。 我在这个答案中描述了一种使用UIScrollView托管的UIView的方法。

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