在iOS7中的scrollViewDidScroll方法中修改后,NSLayoutConstraint不会更新

时间:2016-05-18 18:12:57

标签: ios ios7 autolayout nslayoutconstraint

我有一个连接到故事板的IBOutlet NSLayoutConstraint属性:

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

当滚动视图滚动时,我在scrollViewDidScroll方法中修改了这个约束:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        CGFloat yOffset  = scrollView.contentOffset.y;

        if (yOffset <= -20) {
            [self.logoView mas_updateConstraints:^(MASConstraintMaker *make) {
                    make.top.equalTo(@(yOffset));
                    make.height.equalTo(@(fabs(yOffset) + self.ImageHeight + STATUSBAR_HEIGHT))}];

         }

        CGFloat top = self.ImageHeight - self.titleView.height - yOffset - 20;
        self.titleViewTopConstraint.constant = top;
        if (self.titleViewTopConstraint.constant < 25) {
            self.titleViewTopConstraint.constant = 25;
        }
}

我在滚动视图滚动时尝试更新常量,并且在iOS8中工作正常。但是在iOS7中设置之后,常量似乎没有更新。

知道什么可能导致这个问题,我该如何解决?感谢。

1 个答案:

答案 0 :(得分:2)

您需要调用layoutIfNeeded来更新视图约束。所以一旦你改变你的约束值射击线以下。

[self.view layoutIfNeeded];