2014-04-24 100 views
0

我有以下设置:a UIView包含UILabelUIButtonUIButton有固定的尺寸(它并不重要)。然而,UILabel受到视图边界的限制。如何使用AutoLayout配置视图宽度固定宽度和可变高度

我希望能够设置UIView的宽度,并且应该自动调整其自身的大小,使其高度可以使整个标签内容可见。

我曾尝试以下:

self.view.frame = CGRectMake(0, 0, desiredWidth, 0); 
CGSize fittingSize = [self.view systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
self.view.frame = CGRectMake(0, 0, fittingSize.width, fittingSize.height); 

但是这改变两者的高度和视图的宽度,不保持宽度所需的值。

有没有一个优雅的方法来做到这一点?

在此先感谢您的帮助?

+0

现在你的代码无关,支持自动布局。你在问如何用自动布局来实现这一点?如果是这样,你为什么发布该代码?顺便说一句。你将视图的宽度设置为'fittingSize.width',并想知道为什么它会影响视图的宽度?你为什么不''self.view.frame = CGRectMake(0,0,desiredWidth,fittingSize.height);'' – Tobi

+0

UIView具有自动布局约束来布局UILabel和UIButton相对于它们的边界。 我无法直接设置'desiredWidth',因为它必须匹配'fittingSize.height'。 (例如,如果'fittingSize.width'非常小,'fittingSize.height'需要超高) – Kamchatka

+0

那么为什么你把它们从我们这里隐藏起来呢? :P – Tobi

回答

0

在AutoLayout中,您需要为视图添加宽度,顶部,底部,前导(左)和/或尾部(右)约束到superview并为至少顶部和/或底部约束声明属性。添加上述约束条件后,您可以通过调整顶部和/或底部约束常数值来更改视图的高度。

以下是自动布局指南的链接。

Auto Layout Guide: Introduction

相关问题