2016-05-18 7 views
0

У меня есть свойство IBOutlet NSLayoutConstraint подключен к раскадровке:NSLayoutConstraint не обновляется после изменения в методе scrollViewDidScroll в iOS7

@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.

Любая идея, что может вызвать эту проблему, и как я могу ее решить? Благодарю.

ответ

2

Чтобы обновить ограничение просмотра, необходимо позвонить layoutIfNeeded. Поэтому, как только вы измените значение ограничения, снимите строку ниже.

[self.view layoutIfNeeded];