【问题标题】:How to make TTTAttributedLabel vertically align center with truncated tail如何使 TTTAttributedLabel 垂直对齐中心与截断的尾部
【发布时间】:2015-11-17 12:02:12
【问题描述】:

我正在使用TTTAttributedLabel 显示一些垂直居中的文本(TTTAttributedLabelUILabel 中的默认值),单行(也是默认值),并截断尾行中断。

TTTAttributedLabel *label1 = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(20.0, 40.0, 200.0, 60.0)];
label1.backgroundColor = [UIColor lightGrayColor];
label1.verticalAlignment = TTTAttributedLabelVerticalAlignmentCenter;
[self.view addSubview:label1];

TTTAttributedLabel *label2 = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(20.0, 120.0, 200.0, 60.0)];
label2.backgroundColor = [UIColor lightGrayColor];
label2.verticalAlignment = TTTAttributedLabelVerticalAlignmentCenter;
[self.view addSubview:label2];

NSString *shortString = @"This is a short string.";
NSString *longString = @"This is a somewhat longer string. In fact its really long. So long it takes up alot of space.";

NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:16.0]};

NSMutableAttributedString *shortAttributedString = [[NSMutableAttributedString alloc] initWithString:shortString attributes:attributes];
label1.attributedText = shortAttributedString;

NSMutableAttributedString *longAttributedString = [[NSMutableAttributedString alloc] initWithString:longString attributes:attributes];
label2.attributedText = longAttributedString;

以上代码呈现如下:

这两个标签的唯一区别是字符串长度。可以看到,第二个字符串没有垂直居中。

【问题讨论】:

    标签: ios uilabel vertical-alignment tttattributedlabel


    【解决方案1】:

    根据here 提出的类似问题,您需要将段落样式lineBreakMode 设置为NSLineBreakByTruncatingTail

    TTTAttributedLabel *label1 = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(20.0, 40.0, 200.0, 60.0)];
    label1.backgroundColor = [UIColor lightGrayColor];
    label1.verticalAlignment = TTTAttributedLabelVerticalAlignmentCenter;
    [self.view addSubview:label1];
    
    TTTAttributedLabel *label2 = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(20.0, 120.0, 200.0, 60.0)];
    label2.backgroundColor = [UIColor lightGrayColor];
    label2.verticalAlignment = TTTAttributedLabelVerticalAlignmentCenter;
    [self.view addSubview:label2];
    
    NSString *shortString = @"This is a short string.";
    NSString *longString = @"This is a somewhat longer string. In fact its really long. So long it takes up alot of space.";
    
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
    
    NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:16.0],
                                 NSParagraphStyleAttributeName: paragraphStyle};
    
    NSMutableAttributedString *shortAttributedString = [[NSMutableAttributedString alloc] initWithString:shortString attributes:attributes];
    label1.attributedText = shortAttributedString;
    
    NSMutableAttributedString *longAttributedString = [[NSMutableAttributedString alloc] initWithString:longString attributes:attributes];
    label2.attributedText = longAttributedString;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 2017-01-30
      相关资源
      最近更新 更多