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

Ios 如何使用自动布局调整视图大小以适应标签子视图?,ios,objective-c,uiview,uilabel,autolayout,Ios,Objective C,Uiview,Uilabel,Autolayout,我试图制作一个半透明的黑色矩形,里面有一些文字,向用户传达一些信息。这似乎是可行的,但当手机的文本大小较大时,标签的内容就会被切断——视图将不会扩展其尺寸 为了创建这个,我添加了一个带有黑色背景和圆角的UIView,使它有点透明,并在里面放置了一个UILabel。当手机旋转时,视图上的约束应允许其变宽,标签上的约束应使其边缘固定在视图上 以下是视图的约束: Align Center X to: Superview Align Center Y to: Superview Trailing Spa

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

为了创建这个,我添加了一个带有黑色背景和圆角的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

在iPhone5上运行时,由于某种原因,视图的大小为200x102,文本被截断,即使其约束允许其最大为300x150。我做错了什么?

只需将UILabel Top/Bottom/Lidding/Trailing约束设置为零,因为它具有固有的内容大小。这意味着标签将希望变宽以包含所有可见的字符串值。看

以编程方式创建约束

_constraint=[NSLayoutConstraint constraintWith...];
[self.view addConstraint:_constraint];
//...
_constraint.constant=40;
如果IB中定义了所有约束,请使用outlet。只需将其连接到约束即可

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

非常感谢。将UILabel约束设置为零的工作原理是,当手机旋转时,UIView会自动加宽,但现在标签文本周围没有填充;文本将被向右推到视图的边缘。将“上/下/前导/尾随”约束设置为类似8的值会提供一个填充,但当手机旋转时,视图不会调整大小。如何在视图中添加一些填充以使其看起来更自然?@smeep如果您将约束连接到IBOutlets或将其保留为类成员,则可以根据需要更改常量属性。对不起,我不明白。您是说在IB中将其定义为0,然后在代码中更改该值吗?我试过了,但现在手机旋转时,视图无法调整大小。也许我的假设是错误的-难道不可能完全用自动布局来做我想做的事情吗?我仍然很困惑。首先,您说将约束设置为零以使标签能够展开,但随后显示了将其设置为40的示例。当我将常量属性设置为非零值时,手机旋转时视图/标签的大小似乎无法正确调整。也许我没有把我原来的问题说清楚。我有一个包含标签的灰色半透明视图。文本正在被截断,但我不知道标签是否未正确展开以允许所有文本,或者视图是否未正确展开以允许所有标签。@smeep如果我理解您的意思是正确的,您需要在设备旋转时更新父视图,无需更改父视图中的标签边距?您的父视图约束必须包含顶部约束和前导约束。