8

使用 drawAtPoint:、drawInRect: 甚至设置 UILabels 的 text 属性绘制字符串时 - 文本有时会显得有些模糊。

我倾向于在大多数地方使用 Helvetica,我注意到特定的字体大小会导致在模拟器和设备上出现某种程度的模糊。

例如:

UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:12];

将导致生成的标签具有稍微模糊的文本。

UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:13];

产生清晰的文本。

我的问题是为什么会发生这种情况?仅仅是为字体选择最佳字体大小的问题吗?如果是这样,最佳字体大小是多少?

更新:似乎可能不是字体大小导致模糊。矩形的中心可能是一个小数点。这是我在 Apple 开发者论坛上找到的评论:

检查位置。它可能在小数像素上。将中心更改为整数值。

我将所有点的值四舍五入,但仍有一些地方文本仍然模糊。有没有人遇到过这个问题?

4

6 回答 6

9

我已经解决了这个问题。

只需确保您绘制的点或矩形不会出现在小数像素上。

NSLog(@"%@", NSStringFromCGRect(theRect))确定在分数像素上绘制的点。然后round()在这一点上打电话。

于 2009-03-24T03:45:18.950 回答
3

您可能想查看 NSIntegralRect(),它可以满足您的需求。

于 2009-03-24T22:25:10.880 回答
2

如果这是不正确的,请原谅我的无知,我对 iPhone 或 Cocoa 一无所知。

如果您要求文本在矩形中居中,您可能还需要确保矩形的宽度和/或高度是偶数。

于 2009-03-19T22:07:05.397 回答
2

我也遇到过这个问题,但我的解决方案不同,可能会对某人有所帮助。UIView我的问题是通过TouchesBegan 和更改对象的大小后文本模糊,CGAffineTransformMakeScale然后回到CGAffineTransformIdentity.TouchesEnded

我尝试了不同的文本大小和 x 和 y 中心点的舍入,但都没有奏效。我的问题的解决方案是对我的宽度和高度使用均匀的尺寸UIView

希望这可以帮助 ....

于 2010-09-30T13:43:26.087 回答
0

根据我的实验,某些字体在某些尺寸下无法清晰呈现。例如 Helvetica-Bold 不呈现“.”。在 16.0f 时很好,但在 18.0f 时很清晰。(如果你仔细观察,“。”的顶部像素是模糊的。)

在我注意到这一点之后,每次看到 UIView 时我都会感到厌烦,因为它是动态渲染的。

于 2009-07-06T13:54:47.070 回答
0

就我而言,我在自定义上绘制了文本CALayer,结果变得非常模糊。我通过设置contentScale适当的值来解决它:

目标-C:

layer.contentsScale = [UIScreen mainScreen].scale;

迅速:

layer.contentsScale = UIScreen.main.scale
于 2018-03-16T02:22:00.383 回答