带有自动换行和截断的两行UILabel也在垂直顶部对齐

时间:2013-06-21 12:13:40

标签: objective-c ios6 uilabel

我必须采取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)]];

1 个答案:

答案 0 :(得分:0)

Folk有很多博客可以根据您的要求帮助您配置标签。

Vertically align text to top within a UILabel

以上链接肯定会对您有所帮助。确实

干杯!!!