2016-05-18 10 views
0

Ich habe eine IBOutlet NSLayoutConstraint Eigenschaft Storyboard verbunden:NSLayoutConstraint nicht nach der Modifizierung in scrollViewDidScroll Verfahren in iOS7 Aktualisierung

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

wenn die Scroll-Ansicht scroll tat, I diese Bedingung in scrollViewDidScroll Verfahren ändern:

- (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; 
     } 
} 

Ich versuche, die Konstante zu aktualisieren, wenn Scroll-Ansicht scroll und es funktioniert gut in iOS8. Aber die Konstante scheint nach der Einstellung in iOS7 nicht zu aktualisieren.

Irgendeine Idee, was dieses Problem verursachen kann und wie kann ich es lösen? Vielen Dank.

Antwort

2

Sie müssen layoutIfNeeded aufrufen, um die Einschränkung der Ansicht zu aktualisieren. Wenn Sie also den Grenzwert ändern, schießen Sie unter die Linie.

[self.view layoutIfNeeded];