约束常量更新在iOS 8上不起作用

时间:2014-10-14 07:21:32

标签: ios xcode ios8 autolayout constraints

我对这个简单的UIViewController的约束有一个奇怪的问题。 我只有两个元素,而且正好:

1具有这些约束的UIButton: Button Constraints 1具有这些约束的PageControl: PageControl Constraints 问题出在iOS 8中。我已经连接了UIPageControl的BottomSpace约束来改变常量值(在iOS 7中完美地工作)。在iOS 8中,该值不会发生任何错误。我的代码很简单:

pageControlBottomConstraint.constant = 50

这两个iOS版本有什么区别?

1 个答案:

答案 0 :(得分:8)

执行以下操作,

<强> 1。调用updateConstraintsIfNeeded
2.调用layoutIfNeeded(对于currentView和ViewYouWantToUpdate)

所以你的代码应该是

[pageControl updateConstraintsIfNeeded];
[self.view layoutIfNeeded];
[pageControl layoutIfNeeded];

如果您想为Constraints

制作动画

<强>目标C

[pageControl updateConstraintsIfNeeded]; 
[UIView animateWithDuration:.75f animations:^{
     __weak __typeof__(self) weakSelf = self
     [self.view layoutIfNeeded];
     [pageControl layoutIfNeeded];
}

Swift 3.0:

pageControl.updateConstraintsIfNeeded()
UIView.animate(withDuration: 0.75) {
     weak var weakSelf = self
     weakSelf?.view.layoutIfNeeded()
     weakSelf?.pageControl.layoutIfNeeded()
}