iOS 11上的UILabel线路中断太早

时间:2018-04-10 10:22:39

标签: ios iphone uilabel

我有一个带有单元格表的iOS 11应用程序。

在这个单元格中,我有一个UILabel。

UILabel似乎“决定”以一种至少保持2个字的底线(无论BreakLineMode是什么!)来打破界限。

我知道使用 - 添加不间断空格(U + 00A0) - 太昂贵了

在NSUserDefaults上使用NSAllowsDefaultLineBreakStrategy NO - APPLE不允许

我该怎么做才能解决这个问题?

在这张图片中,您可以看到第二行中的第一个单词可能出现在第一行,但出于某种原因下降到第二行......

enter image description here

修改

这不是宽度问题,这是iOS 11 NEW UILabel逻辑(!)的一个问题,它不允许新行上的孤儿词(一个词),只有两个词,因为他们认为它看起来更好。它没有。但必须有一种方法可以像在iOS 10及更低版本上那样在iOS 11上制作UILabel。

3 个答案:

答案 0 :(得分:0)

您可以添加这三行代码 -

labelName.adjustsFontSizeToFitWidth = true
labelName.minimumScaleFactor = 0.3

labelName.numberOfLines = 0 // or you can set it 1 or 2

答案 1 :(得分:0)

我找到了一个黑客 -

在字符串的末尾添加大量空格(如10 - 20)将使UILabel“认为”该行足够长,因此它会在底行留下一个字。 (而不是2,所以第一行不会提前破坏)

我不喜欢黑客,但这就是我现在所拥有的,如果有人有不同的答案,我会很乐意接受它,而不是这个

答案 2 :(得分:0)

就我而言,我能够通过使用textview解决此问题。 如果禁用滚动,则UITextView允许孤儿根据其固有大小进行调整,如果禁用交互,则UITextView的工作方式类似于标签;在标签中也禁用了该行为,因此它将转发所有触摸。