2016-09-29 3 views
2

tableview 스크롤시 UIView 위치를 변경해야합니다. 애니메이션 블록에서 UIView의 프레임 크기를 변경하면 프레임이 내려 가고 올바른 위치로 이동합니다. 제 코드를보십시오. 처음에 UIView가 아래로 이동합니다

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

보기의 상단으로 이동해야하고 그것은 작동하지만 난 그것을 처음 실행할 때, 그것은받은 위치를 해결하기 위해 아래로 거슬러 올라갑니다. 스크롤 할 때 제약 조건을 어떻게 바꿀 것인가?

답변

1

제한 조건 기반보기의 경우 콘센트를 사용하여 제약 조건 상수 변경 속성을 통해 애니메이션을 시도하십시오.

+1

답장을 보내 주셔서 감사합니다. –

관련 문제