UIView一开始就跳了起来

时间:2016-09-29 14:49:23

标签: ios objective-c uiview

我需要在QImage的滚动条上更改UIView位置。当我在动画块中更改tableview的帧大小时,它会向下移动,然后移动到正确的位置。请看我的代码。

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); } } 应该移到视图顶部并且它可以工作但是当我第一次运行时,它会向下并返回到正确的位置。如何在滚动时更改约束。

1 个答案:

答案 0 :(得分:1)

对于基于约束的视图,尝试使用插座通过更改约束常量属性设置动画。