3

私は2行のラベルを取る必要があります。最初の行では改行モード NSLineBreakByWordWrapping が必要で、2 行目では NSLineBreakByTruncatingMiddle が必要です。また、テキストが 1 行に収まる場合は、垂直方向に上揃えにする必要があります。

私は iOS6 と autolayout を使用しています。1 行のテキストを上に揃えることはできますが、問題は、テキストの長さが最初の行を超えると最初の行に合わせて中央が切り捨てられ、テキストの長さが 2 行目を超えると中央が切り捨てられて 2 行で表示されることです。

私のコード:

    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