在更新约束时委派

时间:2014-07-17 09:59:00

标签: ios iphone objective-c xcode uiscrollview

使用故事板自动布局和UIScrollView时遇到问题。我正在更新UIScrollView的约束,并在设置scrollview的内容大小之后。但是UIScrollView约束需要一些时间来更新,并且最初UIScrollView因为比视图更高的高度而无法滚动。我不能改变当前的实现。

是否有任何方法,通知或任何委托方法来检查约束是否已更新?所以我可以做进一步的改变。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *scrollViewHieghtConstraint;

self.scrollViewHieghtConstraint.constant = 500;
[self.scrollView updateConstraints];

[self.scrollView setContentSize:CGSizeMake(0, 1000)];

2 个答案:

答案 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