【发布时间】:2015-10-01 16:17:36
【问题描述】:
我拼命试图将我的 UILabel 之一粘贴到它的超级视图的右边缘,而标签的宽度是可变的(这是一个时间,所以事情变得越来越大并且应该向左扩展,这是使用 sizeToFit 内部完成的设置文本时的标签)。
到目前为止,我已经尝试了很多东西,但最接近:
_elapsedTimeRightConstraint = [NSLayoutConstraint constraintWithItem:_elapsedTimeView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeRight multiplier:1.0 constant:-150];
虽然标签最初设置为 150px 宽度。但是当我修改常量时,一切都变了。
_elapsedTimeRightConstraint.constant = (_elapsedTimeView.frame.size.width * -1);
[self layoutIfNeeded];
所以我的问题是,当子视图的宽度不断变化时,我如何对齐视图的后沿和它的超级视图(所以它会粘在右边)。我一直在项目的其他地方使用FLKAutoLayout,所以如果可以轻松完成这个框架,那就太好了,但基本的自动布局解决方案也很棒!!!
【问题讨论】:
-
您是否以编程方式创建标签?如果是这样,请确保您已将
translatesAutoResizingMaskIntoConstraints设置为NO其次,您应该使用NSLayoutConstraintTrailing而不是NSLayoutConstraintRight(并且前导而不是左),因为这会使您的布局在左右语言中工作。您不应该将 -150 用于您只想要 0 的常量,并且您不需要修改约束,因为标签会随着内容的变化自动调整其固有大小。最后,除非您正在做一些非常棘手的事情,否则请使用 Interface Builder。这比编码要容易得多
标签: ios objective-c autolayout