使用它的子视图高度无法增加uiview的高度?

时间:2016-01-07 05:55:25

标签: ios objective-c uiview autolayout subview

我使用autolayout来设置uiview的高度取决于它的子视图。 我正在使用可重用的视图。

我在视图控制器中添加了视图,这里是代码

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

NSArray *arrNib = [[NSBundle mainBundle] loadNibNamed:@"ReUsableView" owner:self options:nil];

UIView *subView = [arrNib objectAtIndex:0];
[self.view addSubview:subView];
lbl1 = [subView viewWithTag:1];
lbl1.text = @"fjadsk jkdjf kasdjf kasjdfkas djfkjads kfjaksd fjaskdjf kdsajf ksdjf ksdaj fksadjfkadsjf ksadjfksajd fkdsjfkajf kcnvmjkdalsjfk vaksdjfkj kfdvnkdsjfkajfkda djfkajsdfksja dfksjdafkjas;fjsk";


}

我得到了像这样的输出

enter image description here

当我首先删除lbl的底部constaint时,我得到了以下输出。

enter image description here

如何增加uiview的高度取决于lbl的第一高度?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

考虑到你想用lbl增加蓝色视图的大小,你必须做以下事情

  • 将固定的高度限制赋予lbl1。
  • 删除容器视图的高度约束。
  • 为容器视图添加相同的高度限制& LBL1
  • 更改相等宽度约束的乘数属性 计算containerView height / lbl1 height(“/”表示除以)
  • 取出lbl1的高度限制出口。
  • 计算lbl1的更改高度。将此值指定为高度 通过设置constraints.constant属性来限制lbl。

答案 1 :(得分:0)

要实现这一点,视图所需的约束是;

top=view.top
leading = view.leading
trailing = view.trailing
bottom >= view.bottom
方程的lhs属于你视图的超视图。 用于内部标签;

lbl.top = view.top
lbl.leading = view.leading
lbl.trailing = view.trailing
lbl.bottom = view.bottom.

我在故事板中构建它;这是截图。当标签内的文字越来越长时,视图大小越来越大。

enter image description here