禁用多行UILabel

时间:2016-09-07 02:39:54

标签: ios swift string uilabel linewrap

是否有一种方法可以使用多行标签(myLabel.numberOfLines = 0)来禁用任何类型的换行,这样如果一行太长而无法放在标签的一行上,它就会停止/有点断裂关闭并没有包裹到下面的行?所以我可以使用" \ n"将字符串分配给标签的其他行。我知道太长的行会自动换行到下一行,但我不知道是否有没有换行选项。

所以如果我的标签最多行数为每行10个字符

var firstLine : String = "This is 16 chars"
var secondLine : String = "This is too long"
myLabel.text = firstLine + secondLine
// It would look like this:

输出:

This is 16
This is to

如图所示,即使它们不适合,它也会切断并且不会包裹每一行

2 个答案:

答案 0 :(得分:0)

如果您有所需的标签长度​​,您可以尝试这种愚蠢的工作方法:要自己剪切字符串,请使用stringByPaddingToLength方法。

请尝试以下代码:

self.tempLabel.text = @"This is 16 chars fbaebfbefbefbeif";
self.tempLabel.text = [self.tempLabel.text stringByPaddingToLength:10 withString:@"" startingAtIndex:0];

看到魔法发生

答案 1 :(得分:0)

firstLine + secondLine将成为1个字符串This is 16 charsThis is too long,我不认为你可以做一些没有代码描述的东西,你必须手动将字符串剪切为10个字符并在最后添加\ n,所以它将变为This is 16\nThis is to

类似的东西:

var string = message
let fontAttributes = [NSFontAttributeName: font]
var size = (string as NSString).sizeWithAttributes(fontAttributes)

while size.width > label.width {
        string.removeAtIndex(string.endIndex.predecessor())
        size = (string as NSString).sizeWithAttributes(fontAttributes)
}
string = string+"\n"