iOS 在富文本排版時(shí)碰到問(wèn)題:
- 使用單詞對(duì)齊時(shí),右側(cè)可能出現(xiàn)一個(gè)字以上的空白區(qū)域,如圖1:
- 使用字符對(duì)齊時(shí),右側(cè)空白區(qū)域在一個(gè)字符,但有可能標(biāo)點(diǎn)單獨(dú)占據(jù)一行,如圖2:
希望效果:
- 文字左右對(duì)齊
- 符號(hào)不要單獨(dú)占據(jù)一行

圖1_單詞對(duì)齊.png

圖2_使用字符對(duì)齊.png
解決方案:
- 兩端對(duì)齊:一行代碼解決
網(wǎng)上很少講到NSTextAlignmentJustified,大多在講NSTextAlignmentNatural。
NSTextAlignmentJustified:保持文字左右對(duì)齊,最后一行保持做對(duì)齊,但字間距稍有差異,如果僅展示中文和標(biāo)點(diǎn)符號(hào),效果不錯(cuò)。
NSTextAlignmentNatural:默認(rèn)對(duì)齊。
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.alignment = NSTextAlignmentJustified;//兩端對(duì)齊
- 下面看下幾種方式的效果圖:

兩端對(duì)齊

字符換行、兩端對(duì)齊

單詞換行、兩端對(duì)齊
結(jié)論:
- 兩端對(duì)齊、單詞換行和兩端對(duì)齊的組合都能符合要求
- 字符換行會(huì)導(dǎo)致標(biāo)點(diǎn)單獨(dú)占據(jù)一行,即使使用了組合也不行
下載demo,搜索RichTextComposingViewController類。