2016-09-29 5 views
2

Ich muss UIView Position auf Scroll von tableview ändern. Wenn ich die Bildgröße von UIView in dem Animationsblock ändere, geht es nach unten und dann in die richtige Position. Bitte schau dir meinen Code an.UIView springt am Anfang

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
CGPoint scrollVelocity = [_collectionViewLeaderboard.panGestureRecognizer velocityInView:_collectionViewLeaderboard.superview]; 
if (scrollVelocity.y > 0.0f){ 
    NSLog(@"going down"); 
    [UIView animateWithDuration:0.3f 
           animations:^ { 

            _headerview.frame = CGRectMake(0, 0, _headerview.frame.size.width, _headerview.frame.size.height); 

            _headerviewSecond.frame = CGRectMake(0, _headerview.frame.size.height, _headerviewSecond.frame.size.width, _headerviewSecond.frame.size.height); 

            self.collectionViewLeaderboard.frame = CGRectMake(self.view.frame.origin.x, _headerviewSecond.frame.size.height+_headerview.frame.size.height, self.view.frame.size.width, self.view.frame.size.height); 

            frameconditon = _headerview.frame; 

           } completion:^ (BOOL completed) { 

           }]; 

} 
else if (scrollVelocity.y < 0.0f){ 
    NSLog(@"going up"); 

    //CGAffineTransform transform = CGAffineTransformMake(1, 0, 0, 1, _headerview.frame.origin.x, _headerview.frame.origin.y); 
     [UIView animateWithDuration:5.0 animations:^{ 
      NSLog(@"test"); 


      _headerview.frame = CGRectMake(0, -(_headerview.frame.size.height), _headerview.frame.size.width, _headerview.frame.size.height); 

      _headerviewSecond.frame = CGRectMake(0, (_headerview.frame.size.height)-40, _headerviewSecond.frame.size.width, _headerviewSecond.frame.size.height); 

     } completion:^(BOOL finished) { 

     }]; 


     self.collectionViewLeaderboard.frame = CGRectMake(self.view.frame.origin.x, _headerviewSecond.frame.size.height, self.view.frame.size.width, self.view.frame.size.height); 

} 
} 

headerview soll nach oben Ansicht bewegen und es funktioniert, aber wenn ich es erstes Mal ausführen, es geht nach unten und zurück Postion zu korrigieren. Wie ändere ich die Bedingungen zum Zeitpunkt des Scrollens?

Antwort

1

Versuchen Sie bei Constraint-basierten Ansichten, die Konstanteneigenschaft der Constraints mithilfe eines Auslasses zu animieren.

+1

10 Super danke für die Antwort. –

Verwandte Themen