无法使用它的子视图高度增加 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 中为视图高度设置动画?