我有一个上面UIView
有三个UILabels
的。我有一个title
,subtitle
和subtitleDescription
, 所有UILabel
属性。我希望我的标题在左上角,标题下方的字幕没有间隙,并且 subtitleDescription 到字幕的右侧没有间隙,将基线与字幕基线对齐。如果是视图,我想要省略号,或者在 subtitle/subtitleDescription 的情况下需要视图。我想以编程方式使用自动布局。
与此类似:
_________________________________
|[title] |
|[subtitle][subtitleDescription] |
|________________________________|
我希望标签转到左上角而不是居中。在我现在的代码中,它都是居中的,所有的标签都在彼此之上。
我只是调用sizeToFit
所有的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 向我指出的那样,看起来我的所有约束都被约束异常所打破。我想弄清楚为什么它们坏了。给出的消息是“无法同时满足约束”。