我有一个滚动视图,上面有一些图像。当滚动视图scrollView.contentOffset.x
超过某个X时,我上面的图像应该是动画的。
我知道如何动画。目前我正在- (void)scrollViewDidScroll:(UIScrollView *)scrollView
方法中执行此操作。
if (scrollView.contentOffset.x == 160) {
//animate Image
}
但有时会得到160,但有时会超过160.我该如何解决?
答案 0 :(得分:3)
添加一个实例变量,将其设置为您在上次调用scrollViewDidScroll:
时看到的偏移量,并使用它来决定是否要设置动画:
// Instance variable
CGPoint lastOffset;
...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
...
if (lastOffset.x < 160 && scrollView.contentOffset.x >= 160) {
//animate Image
}
lastOffset = scrollView.contentOffset;
}
每次滚动视图从160以下到160以上时,都可以使图像设置动画。
答案 1 :(得分:2)
使用>= 160
但也使用标记,以便您知道是否已完成动画:
if (scrollView.contentOffset.x == 160 && !self.animatedImage) {
self.animatedImage = YES;
...
}
答案 2 :(得分:0)
我认为你应该添加一些标志来允许图像动画, 滚动期间/图像动画后管理此标志
BOOL isCanAnimate_;
// some code here
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.x >= imageView.frame.size.width / 2 && isCanAnimate_)
{
isCanAnimate_ = FALSE;
[UIView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
{
// Animation here
}
completion:^(BOOL finished)
{
isCanAnimate_ = TRUE;
}];
}
}