如何使用自动布局调整视图大小以适合标签子视图?

时间:2014-11-25 08:28:48

标签: ios objective-c uiview uilabel autolayout

我试图制作一个半透明的黑色矩形,里面有一些文字,向用户传达一些信息。它似乎有效,但是当手机的文字大小很大时,标签的内容就会被切断 - 视图不会扩大尺寸。

为了创造这个,我添加了一个黑色背景和圆角的UIView,使它有点透明,并在其中放置了UILabel。视图上的约束应该允许它在旋转手机时变宽,并且标签上的约束使其边缘固定在视图上。

以下是视图的约束:

Align Center X to: Superview
Align Center Y to: Superview
Trailing Space to: Superview >= 40
Leading Space to: Superview >= 40
Width >= 200
Width <= 300
Height >= 100
Height <= 150

标签的约束:

Trailing Space to: Superview Equals:Default
Leading Space to: Superview Equals:Default
Bottom Space to: Superview Equals:Default
Top Space to: Superview Equals:Default

在iPhone 5上运行时,由于某种原因,视图的大小为200 x 102,文本被截断,即使它的约束允许它达到300 x 150.我做错了什么?

1 个答案:

答案 0 :(得分:0)

将UILabel顶部/底部/封顶/尾随约束设置为零,因为它具有内在的内容大小。这意味着标签将希望变为宽泛以包含其所有可见的字符串值。看this article

以编程方式创建约束

_constraint=[NSLayoutConstraint constraintWith...];
[self.view addConstraint:_constraint];
//...
_constraint.constant=40;

如果在IB中定义了所有约束,请使用outlet。只需将其连接到约束。

@property (nonatomic,weak) IBOutlet NSLayoutConstraint *constraint;