1

私はUIViewそれに3つあるを持っUILabelsています。、titlesubtitleおよびsubtitleDescription、すべてのUILabelプロパティがあります。タイトルを左上に、サブタイトルをタイトルの下にギャップなしで、subtitleDescription をサブタイトルの右側にギャップなしで配置し、ベースラインをサブタイトルのベースラインに合わせます。ビューの場合は省略記号が必要です。サブタイトル/サブタイトルの説明の場合はビューが必要です。プログラムで自動レイアウトを使用したいと思います。

これに似ています:

  _________________________________
 |[title]                         | 
 |[subtitle][subtitleDescription] |
 |________________________________|

ラベルを中央揃えではなく左上に配置したい。現在の私のコードでは、すべてが中央に配置され、すべてのラベルが互いに重なっています。

sizeToFit私はすべての'sを呼び出すだけUILabelで、それ以外はフレームをまったく調整しません。もちろん、このコードは、ラベルを割り当てて初期化し、テキストを設定した後です。これが私のコードです:

 - (void)setup
 {
[self.title sizeToFit];
[self.subtitle sizeToFit];
[self.subtitleDescription sizeToFit];

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[title]-(>=0)-|"
                                                            options:kNilOptions
                                                           metrics:nil
                                                             views:@{ @"title" : self.title }]];

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[subtitle]-5-[subdesc]-(>=0)-|"
                                                             options:NSLayoutFormatDirectionLeftToRight
                                                             metrics:nil
                                                               views:@{ @"subtitle" : self.subtitle,
                                                                        @"subdesc"  : self.subtitleDescription }]];

// compR > compR
[self setContentCompressionResistancePriority:900 forAxis:UILayoutConstraintAxisHorizontal];
[self setContentCompressionResistancePriority:500 forAxis:UILayoutConstraintAxisHorizontal];

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[title]-5-[subtitle]|"
                                                             options:kNilOptions
                                                             metrics:nil
                                                               views:@{ @"title"    : self.title,
                                                                        @"subtitle" : self.subtitle }]];

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.subtitleDescription
                                                 attribute:NSLayoutAttributeBaseline
                                                 relatedBy:NSLayoutRelationEqual
                                                    toItem:self.subtitle
                                                 attribute:NSLayoutAttributeBaseline
                                                multiplier:1.0
                                                  constant:0]];
 }

ありがとうございました!!!

ビューのスクリーンショットを次に示します。

ここに画像の説明を入力

アップデート

jrturton が私に指摘したように、すべての制約が制約の例外から壊れているようです。私はそれらが壊れている理由を理解しようとしています。与えられたメッセージは「制約を同時に満たすことができません」です。

4

1 に答える 1