【问题标题】:How to adjust uiscrollview after adding view (autolayout)添加视图后如何调整uiscrollview(自动布局)
【发布时间】:2014-12-23 22:10:39
【问题描述】:
主UIView 中有一个UIScrollView。我在滚动视图中有容器UIView,它的边缘固定在滚动视图上。并且此容器视图具有常量 width 和 height 约束。因为没有它们滚动视图就无法工作。
当我在容器视图中垂直添加很多子视图时,子视图超出了容器视图的底部边框。它不可滚动,因为容器具有相同的预定义高度。
如何使容器视图可调整,以便它可以匹配子视图的高度,使其可滚动。
还请考虑我正在使用autolayout。
【问题讨论】:
标签:
ios
user-interface
uiscrollview
autolayout
nslayoutconstraint
【解决方案1】:
你真正需要做的是更新高度约束,对吧?
我会将内部视图的高度约束链接为 ViewController 中的 IBOutlet:
@property (nonatomic, weak) IBOutlet NSLayoutConstraint *contentViewHeight;
然后,当您在其中添加子视图时,您需要通过调用该方法来更新约束的常量:
- (void)updateContentViewHeight:(CGFloat)height
{
self.contentViewHeight.constant = height;
[self.yourContentView layoutIfNeeded];
}
如果您可以跟踪整个子视图堆栈的高度,那就太好了!你只需要将它传递给那个方法。
如果没有,它可能有点棘手......您可能需要删除高度约束,将您的子视图添加到彼此下方(只要它们的高度是固定的),而不要忘记“固定”底部边框的最后一个子视图到“内部视图”的底部边框。
换句话说,内部视图的高度不是固定的,而是通过其“高度固定”内容的总和来扩展。
这样之后:
[self.yourContentView layoutIfNeeded];
它的“.frame”中应该有它的最终高度
然后您应该能够更新高度约束或设置滚动视图的内容大小,这是最适合您的。