我必须采取2行标签。在第一行我需要换行模式NSLineBreakByWordWrapping和第二行NSLineBreakByTruncatingMiddle。此外,如果文本适合单行,则应垂直顶部对齐。
我正在使用iOS6和autolayout。我可以将单行文本对齐到顶部,但问题是如果文本长度超过第一行,则截断中间以适合第一行,如果文本长度超过第二行,则它截断中间并显示在两行上。
我的代码:
self.testLabel = [[UILabel alloc] init];
self.testLabel.numberOfLines = 2;
self.testLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
self.testLabel.preferredMaxLayoutWidth = 200;
[self.testLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.testLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.testLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:self.testLabel];
NSArray* constrs = [NSLayoutConstraint constraintsWithVisualFormat:@"|-20-[_testLabel]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_testLabel)];
[self.view addConstraints:constrs];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[_testLabel]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_testLabel)]];
[self.testLabel addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_testLabel(42@250)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_testLabel)]];
答案 0 :(得分:0)