Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何阻止UILabel替换“&引用;带省略号的_Ios_Objective C_Uilabel - Fatal编程技术网

Ios 如何阻止UILabel替换“&引用;带省略号的

Ios 如何阻止UILabel替换“&引用;带省略号的,ios,objective-c,uilabel,Ios,Objective C,Uilabel,我有一个广泛使用固定宽度字体标签的iOS应用程序 在切换到iOS 7 sdk和构建目标6.1之后,所有标签都会自动用省略号替换出现的三个标点符号。这破坏了很多东西,看起来很奇怪,因为我使用的字体中没有省略号字符,iOS认为适合使用不同字体中的省略号字符 如何停止此行为?解决此问题的一种方法是使用unicode 2024字符(“一个点引线”)替换ASCII句点。它看起来与句点完全相同,但不应自动转换 如果这种情况普遍存在,您可以将所有UILabel更改为一个子类MyLabel,并截获消息以设置文本

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

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


如何停止此行为?

解决此问题的一种方法是使用unicode 2024字符(“一个点引线”)替换ASCII句点。它看起来与句点完全相同,但不应自动转换

如果这种情况普遍存在,您可以将所有UILabel更改为一个子类MyLabel,并截获消息以设置文本,查找三个点,如果找到,则将它们更改为上面的unicode字符

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

编辑


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

这是一个连字,iOS似乎会自动替换它们(比如
fl
变成
fl
)。似乎有一些选项可以禁用它们,请参见此问题:

另一种选择:省略号本身就是一个真正的字符。为什么不尝试将其添加到字体中(使用Fontlab、FontForge或Glyphs),与其他字符的宽度相同?

备选方案三:在点之间插入零宽度空格(U+200B)


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

有趣的发现,我也可以复制。可能应该报告。有趣的是,对于截断尾,它们并没有用单个字符替换省略号。我不确定它是否使用单个字符作为省略号(如何检查?),但这些点的样式是不同的,这是肯定的。因此,我正在研究一个类似的问题,但无法重现这个问题。请提供准确的字符串。注意,我使用的是最新的Xcode/iOS“UnderNDA”版本,但部署目标是6.1。那么,一个字符串,它是在IB中设置的还是在代码中设置的?在带有系统字体的代码中,所有字体看起来都很好(没有变化)。所以我尝试将字体设置为Courier,并在IB和代码中设置字符串-当我读出它时,总是使用句点。或者在点之间插入零宽度的空格?(U+200B)@Cyrille Hah-好建议!最后,它必须监视和更改文本,这才是真正的皮塔语。@Cyrille我一直在考虑,但我讨厌这样的变通方法。我们必须能够禁用此行为!;)如果没有,你的解决方案就是我要用的。你应该用你的答案做出一个真实的答案,这样我才能把它标记为答案。答复:)我一直沿着那条路走。用任何免费的东西编辑ttf对我来说从来都不成功(