使用故事板自动布局和UIScrollView时遇到问题。我正在更新UIScrollView的约束,并在设置scrollview的内容大小之后。但是UIScrollView约束需要一些时间来更新,并且最初UIScrollView因为比视图更高的高度而无法滚动。我不能改变当前的实现。
是否有任何方法,通知或任何委托方法来检查约束是否已更新?所以我可以做进一步的改变。
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *scrollViewHieghtConstraint;
self.scrollViewHieghtConstraint.constant = 500;
[self.scrollView updateConstraints];
[self.scrollView setContentSize:CGSizeMake(0, 1000)];
答案 0 :(得分:13)
您可以使用- (void)updateViewConstraints
的{{1}}选择器。
如果您扩展了视图,也可以使用UIViewController
的{{1}}选择器。
答案 1 :(得分:0)
您无法直接调用-updateConstraints。您必须将视图的约束标记为脏,iOS将在下一个更新周期中调用该方法。
在UIViewController的实现中,在需要更改约束时添加它:
self.scrollViewHieghtConstraint.constant = 500;
[self.view setNeedsLayout];
我假设UIScrollView是UIViewController视图的子视图。如果不是,则在scrollview的父视图上调用-setNeedsLayout。
如果你需要知道子视图何时在正确的位置,你有一个UIViewController的回调,叫做-viewDidLayoutSubviews