如果单词太长,NSLineBreakByWordWrapping不起作用

时间:2015-10-15 21:12:55

标签: ios nsstring

嗨我正在尝试根据里面的文字调整字符串大小。但是,如果文本(1个单词文本链接)对于我用来调整大小的宽度来说太长了,就像下面一样;标签不符合它的大小。我正在使用的代码是;

UILabel *gettingSizeLabel = [[UILabel alloc] init];
gettingSizeLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:14];
gettingSizeLabel.text = messageData.TEXT;
gettingSizeLabel.numberOfLines = 0;
gettingSizeLabel.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail;
CGSize maximumLabelSize = CGSizeMake(240, 9999);
CGSize expectSize = [gettingSizeLabel sizeThatFits:maximumLabelSize];

在我写的时候,我希望将文本宽度调整为240(最大),它也需要多行。但结果可以计算超过240。 感谢

1 个答案:

答案 0 :(得分:0)

这一行是非法的:

gettingSizeLabel.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail;

lineBreakMode不是位掩码。我很惊讶这甚至可以编译,但它确实是切换到Swift的一个很好的理由,这个错误是不可能的。

如果你解决了这个问题,它可以正常工作(这是Swift,但它不会给你带来任何麻烦):

let s = "https://test.mobiletest.com/apps/12345678/install/abc123abc123abc123abc124"
let lab = UILabel()
lab.numberOfLines = 0
lab.text = s
lab.lineBreakMode = .ByWordWrapping
let result = lab.sizeThatFits(CGSizeMake(240,10000))
// (232.666666666667, 61.0)