iOS中如何加自动断字

作者: liuxingzi | 来源:发表于2019-03-11 18:35 被阅读36次

先说什么叫自动断字吧

看图说话吧,图片来自网络

左侧无断字,右侧有断字

我们的APP里经常会遇到这种情况,如果没有断字,排版(如上图左侧)看起来效果不好。

那能不能像Word里那样排版呢。

先说第一种方案,也就是参考文章1 iOS中自动断字(hyphenationFactor)的使用 中提到的,

我这里不写了,做法看这篇文章吧

hyphenationFactor 使用这个属性,

这个方案有一个不好的地方,需要给NSLocale加了个Category,把APP的NSLocale默认到英文,这是因为hyphenationFactor有个限制,可以参考Dev里的

hyphenationFactor

我的APP不允许我修改,因为我还有其它地方会需要用到NSLocale 的 preferredLanguages

现在说一下另一种方案

参考2)Hyphenation in native iOS app

给NSString加个Category,不加也行,加就是为了通用

参考NSString+SoftHyphenation 代码  (简书上放代码格式太难控制了,还是直接放在github上吧)

说一个用法吧

这里给NSString加了一个方法softHyphenatedString

对于原来需要展示在UILabel(或其它)上的文本,先执行

uiLabel.text = [text softHyphenatedString];

就OK了,

再说一下原理吧,不想了解的同学也可跳转,

NSString+SoftHyphenation

主要用到 CFStringGetHyphenationLocationBeforeIndex 找到需要加连字符的位置,标记出来,

再在这个位置插入一个字符 ‘\u00AD’,这是一个控制字符

代码0xAD是一个软连字元(表示除非在行尾断开单词时使用,否则不显示)(参考:扩展ASCII百科

到这里应该明白了吧,加入了一个只有在需要时才会显示的字符,符合我们的期望。

看一下效果

左侧使用断字,右侧无

参考文章:

1)iOS中自动断字(hyphenationFactor)的使用

2)Hyphenation in native iOS app

3)自动断字 ( Auto Hyphenation ) 是什么,为什么你的 App 里应该使用它

相关文章

网友评论

    本文标题:iOS中如何加自动断字

    本文链接:https://www.haomeiwen.com/subject/kbabpqtx.html