我有多个视图,视图上有许多 UILabel。(全部在 Interface Builder 中构建)。
然后,当您捏住屏幕时,我会尝试创建我的视图的“较小”副本。
为此,我申请:
view.transform = CGAffineTransformMakeScale(.5, .5);
然后我也调整了视野。
问题是转换后,我所有的 UILabel 中的文本都变得“模糊”。它不会像在全尺寸视图中那样保持像素完美。
有没有办法在转换后增加标签的像素化?
我有多个视图,视图上有许多 UILabel。(全部在 Interface Builder 中构建)。
然后,当您捏住屏幕时,我会尝试创建我的视图的“较小”副本。
为此,我申请:
view.transform = CGAffineTransformMakeScale(.5, .5);
然后我也调整了视野。
问题是转换后,我所有的 UILabel 中的文本都变得“模糊”。它不会像在全尺寸视图中那样保持像素完美。
有没有办法在转换后增加标签的像素化?
对 UIView 或 CALayer 应用变换只会缩放该层或视图的光栅化位图。这可能会导致生成的 UI 元素变得模糊,因为它们不会以新的比例重新渲染。
如果您真的希望您的文本或图像在新的比例因子下清晰,您将需要手动调整它们的大小并使其重绘而不是应用变换。我在此答案中描述了一种使用 UIScrollView 中托管的 UIView 执行此操作的方法。
您也许可以创建一个方法来遍历您的一个主视图的视图层次结构,递归地读取每个子视图的框架,将其缩小,然后强制重绘其内容。变换仍然非常适合用于交互式操作或动画,但您可以在操作或动画结束时触发完全手动缩放和重绘。