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

标签 objective-c ios6 uilabel

我必须使用 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)]];

最佳答案

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

Vertically align text to top within a UILabel

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

干杯!!!

关于objective-c - 带有自动换行和截断的两行 UILabel 也在垂直顶部对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17234992/

相关文章:

ios - UIImagePickerController 在拍照时是横向的,但在预览时是纵向的

ios - 当我更改 UILabel 的文本时屏幕不会更新

ios - 原始访问器没有可见的@interface

iphone - NSURLConnection 下载时间很长

objective-c - FBSession 的 Facebook iOS SDK 3.0 登录教程问题

iphone - iOS 6 调试控制台不见了?

ios - iOS NSArray数量

iphone - 检查设备是否为 iPad

swift - 如何在UIKit中使用SF Rounded

ios - 使用 NSNumberFormatter 显示上标 %