我有一个带有单元格表的iOS 11应用程序。
在这个单元格中,我有一个UILabel。
UILabel似乎“决定”以一种至少保持2个字的底线(无论BreakLineMode是什么!)来打破界限。
我知道使用 - 添加不间断空格(U + 00A0) - 太昂贵了
和
在NSUserDefaults上使用NSAllowsDefaultLineBreakStrategy NO - APPLE不允许
我该怎么做才能解决这个问题?
在这张图片中,您可以看到第二行中的第一个单词可能出现在第一行,但出于某种原因下降到第二行......
修改
这不是宽度问题,这是iOS 11 NEW UILabel逻辑(!)的一个问题,它不允许新行上的孤儿词(一个词),只有两个词,因为他们认为它看起来更好。它没有。但必须有一种方法可以像在iOS 10及更低版本上那样在iOS 11上制作UILabel。
答案 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的工作方式类似于标签;在标签中也禁用了该行为,因此它将转发所有触摸。