3

我必须取 2 行标签。在第一行我需要换行模式 NSLineBreakByWordWrapping 和第二行 NSLineBreakByTruncatingMiddle。此外,如果文本适合单行,则应垂直顶部对齐。

我正在使用 iOS6 和自动布局。我可以将单行文本对齐到顶部,但问题是如果文本长度超过第一行,它会截断中间以适合第一行,如果文本长度超过第二行,那么它会截断中间并显示在两行上。

我的代码:

    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)]];
4

1 回答 1

0

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

在 UILabel 中将文本垂直对齐到顶部

上面的链接肯定会对你有所帮助。的确

干杯!!!

于 2013-06-21T12:18:01.120 回答