两个标签彼此相邻,截断一个

时间:2015-12-14 14:27:31

标签: ios objective-c

我有两个标签彼此相邻,但是右边的标签即使在左侧设置截断规则时也会截断。

我的代码:

// Club name
labelFirst = [[UILabel alloc] init];
labelFirst.adjustsFontSizeToFitWidth = NO;
[labelFirst setLineBreakMode:NSLineBreakByTruncatingTail];
[labelFirst setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.contentView addSubview:labelFirst];

labelSecond = [[UILabel alloc] init];
[labelSecond setAdjustsFontSizeToFitWidth:NO];
[labelSecond setTranslatesAutoresizingMaskIntoConstraints:NO];
[labelSecond setText:NSLocalizedString(@"IsCancelled", nil)];
[self.contentView addSubview:labelSecond];

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-73-[label]-[label2]-10-|" options:0 metrics:nil views:@{@"label": labelFirst, @"label2": labelSecond}]
[self.contentView addConstraints:constraint];

我该怎么做?

2 个答案:

答案 0 :(得分:4)

这是内容压缩阻力优先级发挥作用的地方。根据要先压缩的值,将这些值设置得越来越高。您想要的标签在抵制压缩时优先级更高。降低要首先压缩(截断)的标签。

您可以通过编程方式(默认为750)执行此操作:

[labelFirst setContentCompressionResistancePriority:749
                                            forAxis:UILayoutConstraintAxisHorizontal];

或在尺寸检查器选项卡下的界面构建器中:

enter image description here

Here is another answer详细介绍了它们的工作原理。

答案 1 :(得分:0)

NSLineBreakByTruncatingTail - 它是标签的默认LineBreakMode值,将其更改为labelSecond以具有差异