使用drawAtPoint:,drawInRect:绘制字符串时,甚至设置UILabels的文本属性 - 文本有时会显得有些模糊。
我倾向于在大多数地方使用Helvetica,我注意到特定的字体大小会在模拟器和设备上造成某种程度的模糊。
例如:
UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:12];
会导致生成的标签文字略显模糊。
UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:13];
结果清晰。
我的问题是为什么会发生这种情况?这只是为字体选择最佳字体大小的问题吗?如果是这样,最佳字体大小是什么?
更新:似乎可能不是导致模糊的字体大小。可能是rect的中心是一个分数点。以下是我在Apple开发论坛上发现的评论:
检查位置。它很可能在 分数像素。改变中心 整数值。
我舍入了所有积分的值,但仍然存在文字仍然模糊的地方。有没有人遇到过这个问题?
答案 0 :(得分:9)
我已经解决了这个问题。
确保在小数像素上不会出现您正在绘制的点或矩形。
即。 NSLog(@"%@", NSStringFromCGRect(theRect))
确定在小数像素上绘制哪个点。然后在该点上致电round()
。
答案 1 :(得分:3)
您可能希望查看NSIntegralRect(),它可以执行您想要的操作。
答案 2 :(得分:2)
请原谅我的无知,如果这是不正确的,我对iPhone或Cocoa一无所知。
如果您要求文本在rect中居中,您可能还需要确保rect的宽度和/或高度为偶数。
答案 3 :(得分:2)
我也遇到过这个问题,但我的解决方案有所不同,可能有所帮助。
通过UIView
更改TouchesBegan
对象的大小后,我的问题是文字模糊
和CGAffineTransformMakeScale
,然后返回CGAffineTransformIdentity
中的TouchesEnded
。
我尝试了不同的文字大小和x和y中心点的舍入,但都没有奏效。
我的问题的解决方案是使用偶数大小来表示UIView
!!
希望这会有所帮助......
答案 4 :(得分:0)
根据我的实验,某些字体在某些尺寸下无法清晰呈现。例如Helvetica-Bold不呈现“。”好吧在16.0f,但他们在18.0f清楚。 (如果你仔细观察,“。”的顶部像素是模糊的。)
在我注意到这一点之后,每次看到UIView时都会感到烦恼,因为它是动态呈现的。
答案 5 :(得分:0)
就我而言,我在自定义 <a-entity id="scenePivot" recenter="target: #frontObject">
<a-entity id="frontObject" data-description="When resetting, this object will be checked to see if user is facing it or not to confirm the reset."
</a-entity>
<a-camera></a-camera>
上绘制文字,结果非常模糊。我通过将CALayer
设置为适当的值来解决它:
目标-C:
contentScale
夫特:
layer.contentsScale = [UIScreen mainScreen].scale;