字符串文字中的垂直条|
字符在Xcode和iPad模拟器上以不同方式显示。
基本上我只是通过竖线|
字符将一组值分隔为NSString
字面值。
Objective-C代码:
NSString cars = @"Ferrari | Maserati | Subaru | Porsche | Mazda | Renault | Aston | Cadillac"
这没什么特别的,但无论出于什么原因,它在Xcode以及iPad模拟器中以奇怪的形式出现。
问题的截屏:
绿色箭头显示|
字符,看起来不错,但红色箭头指向的相同字符看起来有点粗,也有模糊。
供参考:
UILabel
内呈现此字符串文字。UILabel
的字体为System- System
,样式为Regular
,尺寸为14
我在这个问题上已经坚持很长一段时间了,并且无法弄清楚是什么导致了这个问题。
答案 0 :(得分:2)
这纯粹是CoreText的抗锯齿渲染的结果。 你无法控制,因为Mac OS和iOS的文本渲染引擎忽略了TTF和OTF文件中的提示指令,这些指令旨在使字符“粘住”整数像素。
这仅仅是在原始iPad等低分辨率显示器上展示的非问题;具有Retina显示屏的设备具有更清晰的渲染,如果存在问题则不会引起注意。
答案 1 :(得分:1)
正如其他人所说,你可能会遇到一个小数像素,这会引起抗锯齿。我在Safari中看到了类似的问题,即使只是阅读问题中的文字。还有其他人注意到,你似乎在这个字符串中有其他字符被抗锯齿。例如,请查看保时捷中的P
和REnault中的E
。 (也许这些是压缩工件,但可能是原始的。)
尝试改善这种情况的一种常见方法是使用奇数字体大小(13或15而不是14)。这并不总是成功,但可以提供帮助。绝对解决此问题的唯一方法是执行您自己的文本布局,以确保|
字符对齐而不是使用标签。您可以通过让Core Text执行布局,然后调整关键字形的位置来实现此目的。或者您可以手动绘制垂直线而不是使用文本。 (@Sulthan提出了一个有趣的小集合视图建议,可能更灵活。)