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

Posted

技术标签:

【中文标题】无法使用它的子视图高度增加 uiview 的高度?【英文标题】:Not able to increase height of uiview using it's subview height? 【发布时间】:2016-01-07 05:55:25 【问题描述】:

我使用自动布局来设置 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";



我得到了这样的输出

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

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

感谢您的帮助!

【问题讨论】:

【参考方案1】:

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

为 lbl1 提供固定高度约束。 移除容器视图的高度限制。 为容器视图和 lbl1 添加等高约束 将等宽约束的乘数属性更改为 计算 containerView 高度/lbl1 高度(“/”表示除以) 消除 lbl1 的高度限制。 计算 lbl1 的更改高度。将其分配给 height 通过设置 constraints.constant 属性来限制 lbl。

【讨论】:

【参考方案2】:

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

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.

我在故事板中构建它;这是屏幕截图。当标签内的文本变长时,视图尺寸会变大。

【讨论】:

以上是关于无法使用它的子视图高度增加 uiview 的高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局在 UIScrollView 中为视图高度设置动画?

如何在tableview标题中更改uiview的高度

以编程方式将自动布局约束添加到恒定宽度和高度的子视图

如果ios中的孩子数量增加,我如何自动增加UIView的高度

无法获取 UITableViewCell 的索引路径

UIView常见属性二