2017-03-17 58 views
0

我正在使用UILabel来显示文本。有时,它会在文本副本中创建孤儿和遗problem问题,文本对齐设置为“对齐”,连字因子也设置为1.0。如何删除多行UILabel中的孤儿和寡妇,并对齐文本?

我该如何解决遗012 &孤儿问题?

我想用字母换行的连字符对齐文本,并希望删除孤儿和寡妇。

我已经将标签属性设置为标签,标签的大小根据设备宽度进行设置。

image

这里是属性文本代码:

let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.alignment = NSTextAlignment.Justified 
    paragraphStyle.hyphenationFactor = 1.0; 

let strTwo = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"; 

let attrlblTwo = NSAttributedString(string: strTwo, 
              attributes: [ 
               NSParagraphStyleAttributeName: paragraphStyle, 
               NSBaselineOffsetAttributeName: NSNumber(float: 0),NSKernAttributeName: 0, NSFontAttributeName : lblTwo.font 
     ]) 
    self.lblTwo.attributedText = attrlblTwo 
+0

这可能在iOS 11中发生了变化,因此完全没有您的要求。我的问题是我需要孤儿,因为我没有理由,只有两条短线看起来很愚蠢。 (请参阅https://stackoverflow.com/questions/46200027/uilabel-wrong-word-wrap-in-ios-11) –

回答

0

你有没有试过这样做,用故事板?我从之前的一个项目中体验到了这一点,在故事板上有一个UILabel,将Text设置为Atrributed并将连字符设置为1适合我。测试了不同的段落长度和iOS设备。

+0

是的,我已经尝试过与故事板之前。和我以编程方式做同样的事情。 –

+0

@ DB_2016你有没有试过这个帖子? http://stackoverflow.com/questions/33228302/how-can-i-prevent-orphans-in-a-label-in-swift – Lysdexia

0

要摆脱孤儿,请将文本中的最后一个空格替换为非空格。非破坏空格字符是U + 00A0。您可以通过从编辑菜单中选择“Emoji & Symbols”找到它,单击右上角的小部件将字符查看器展开为完整大小,然后在搜索字段中键入空格。你会看到一些“缺失”字符,这些是空格字符。点击它们直到找到“No-Break Space”,然后双击它将其插入到代码中。 Character Viewer with Non Breaking Space highlighted