私はUIView
それに3つあるを持っUILabels
ています。、title
、subtitle
および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 が私に指摘したように、すべての制約が制約の例外から壊れているようです。私はそれらが壊れている理由を理解しようとしています。与えられたメッセージは「制約を同時に満たすことができません」です。