2011-12-12 112 views
3

我正在使用一个UIScrollView与按钮的列表看起来很像UIPickerView。我刚刚实施摇摆洗牌,在检测到抖动时,我使用以下方法将UIScrollView的内容偏移量设置为randomShuffle的位置。自定义UIScrollView动画

[Singlescroll setContentOffset:CGPointMake(jumpX, jumpY+randShuffle*sepValue) animated:YES]; 

相反只是移动内容偏移到相匹配的按钮我想实现的混洗动画其中视图几乎“旋转”像老虎机,然后在randomShuffle按钮位置结束的随机位置的。

我试图通过简单的动画的偏移量的UIScrollView的顶部要做到这一点,然后再次向下行进回到randomShuffle位置(一个接一个),然而这并没有工作,它只是直奔前随机洗牌的位置。我意识到我没有用计时器来试这个,所以动画没有延迟,但是我希望尽可能避免运行计时器。

是否有任何内置的动画可以处理这个问题?如果不是,请你能建议我在使用计时器之前如何处理这个问题?谢谢。

+0

UIScrollViews中是否有内置的动画内置? – Wez

回答

5

,而不是仅仅使用动画的:是,你有没有尝试把它变成类似:

[UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ 
    [Singlescroll setContentOffset:maximumOffsetPoint]; //spin all the way up? 
}completion:^(BOOL finished){ 
    if (finished) 
     //kick off another animation, to spin it back down: 
     [UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ 
      [Singlescroll setContentOffset:CGPointMake(jumpX, jumpY+randShuffle*sepValue)]; 
     }completion:nil]; 
    } 
}]; 

我不知道这是否回答你的问题,但在完成块是超级方便,可能是你需要。在完成块中,第二个动画只会在第一个动画结束时被调用。

此外,在UIView上有几个animateWithDuration:方法,但根据我的经验,这对于动画属性(如contentOffset和zoomToRect)的滚动视图更加可靠。

+0

谢谢,它为我工作。如果您正在重复使用视图,请在没有设置选项的情况下执行视图。 –