放大后的iOS文本渲染

放大后的iOS文本渲染,ios,uiview,render,cgaffinetransform,text-rendering,Ios,Uiview,Render,Cgaffinetransform,Text Rendering,我编写了一个函数,使用CGAffineTransformScale放大UIView。放大2倍后,所有文本看起来都非常模糊。如果一开始图像的分辨率更高,图像就可以了。放大后是否有办法以适当的分辨率重新渲染所有文本 编辑: 我找到了问题的部分解决方案: (无效)移动到窗口{ self.contentScaleFactor=2.0;} 通过在UIView类别中添加上述方法,UILabel、UIButton和大多数其他视图现在以高分辨率渲染。但是,这并不影响UITextView或UIWebView

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

编辑: 我找到了问题的部分解决方案:

  • (无效)移动到窗口{ self.contentScaleFactor=2.0;}
通过在UIView类别中添加上述方法,UILabel、UIButton和大多数其他视图现在以高分辨率渲染。但是,这并不影响UITextView或UIWebView。这两个视图中的任何一个视图中的文本仍然是模糊的


因此,新的问题是,放大后如何以高分辨率重新绘制UIExtView或UIWebView?

是的。您可以在UIView上设置
contentScaleFactor
,使其以更高的分辨率呈现其背景视图。不过,要小心视网膜设备;您希望确保新的
contentScaleFactor
至少是您的
[[UIScreen mainScreen]比例]
。(我会在动画之前设置此选项,使其平滑。)


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

谢谢您的回答。我还是很困惑。我应该设置父视图还是子视图的contentScaleFactor?我尝试设置父视图,但没有成功。如果这不起作用,那么设置直接子视图也不起作用,因为实际的文本视图可能在视图层次结构中很深,因此子视图仍然被视为是它的取消安装。不幸的是,您需要在(深度)文本视图本身上设置此选项,不管它们位于层次结构中的哪个位置,因为正是这些视图将文本实际渲染为像素。谢谢Jesse!真的帮了大忙,不客气。如果我的回答有助于你解决这个问题(并且会鼓励其他人在将来帮助你),那么接受我的回答很好。我已经扩展了这个问题。我想对你的答案投赞成票,但我没有足够的声誉:(