如何阻止UILabel用省略号字符替换“...”

时间:2013-11-19 19:24:33

标签: ios objective-c uilabel

我有一个广泛使用固定宽度字体标签的iOS应用程序。

更改为iOS 7 sdk并构建目标6.1后,所有标签都会使用省略号字符自动替换三个标点符号的出现。这打破了很多东西并且看起来很奇怪,因为省略号字符在我使用的字体中不存在,并且iOS认为适合使用不同字体的字体。

如何停止此行为?

4 个答案:

答案 0 :(得分:2)

这是一个连字,iOS似乎会自动替换它们(如fl变为)。似乎有一些选项可以禁用它们,请参阅此问题:Adjoining "f" and "l" characters

答案 1 :(得分:1)

解决此问题的一种方法是用unicode 2024字符(“ONE DOT LEADER”)替换ASCII句点。它看起来完全像一个句号,但不应自动转换。

如果广泛使用,你可以做的是将所有UILabel更改为子类,MyLabel,并拦截消息以设置文本,查找三个点,如果找到则将它们更改为上面的unicode字符。

是的,这是一个很大的PITA,但我知道没有其他的解决办法。

修改

另一个想法 - 找一个开源UILabel(必须至少有一个)并使用它。

答案 2 :(得分:1)

备选数字3:在点之间插入零宽度空间(U + 200B)。

(根据OP的要求发布答案)

答案 3 :(得分:0)

另一种选择:省略号是它自己的真实角色。为什么不尝试将自己的字体(使用Fontlab,FontForge或Glyphs)以与其他字符相同的宽度自行添加?