21

我想要类似于应用程序启动时 Flipboard 轻微翻转动画的目的。Flipboard 启动时会有轻微的上下翻转,向不熟悉界面的用户表明它是可翻转的。

我有一个 UIScrollView 我想制作一点动画来向用户展示它是可滚动的。所以我想向右滚动一点并返回。UIScrollView 有一条setContentOffset:animated:没有完成子句的消息。我发现调用它两次似乎没有动画。如果我想要一个接一个又一个动画怎么办?

编辑:感谢李维的回答。为了记录,UIViewAnimationOptionAutoreverseUIViewAnimationOptionRepeat可以使用它。所以这就是我最终得到的结果。

CGPoint offset = self.scrollView.contentOffset;
CGPoint newOffset = CGPointMake(offset.x+100, offset.y);

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAutoreverse |UIViewAnimationOptionRepeat animations:^{
    [UIView setAnimationRepeatCount: 2];
    [self.scrollView setContentOffset:newOffset animated: NO];
} completion:^(BOOL finished) {
    [self.scrollView setContentOffset:offset animated:NO];
}];
4

2 回答 2

46

对于 scrollView、tableView 或 collectionView,如果您执行以下操作:

[self.collectionView setContentOffset:CGPointMake(self.collectionView.contentOffset.x+260.0,
                                                  self.collectionView.contentOffset.y)
                             animated:YES];

然后你会得到一个:

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

当滚动完成时。

如果用户移动视图,您不会收到此回调。

于 2014-11-03T23:48:22.517 回答
33

两种选择:

1)使用-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView委托回调

2) 尝试将其放入... animated:NO];具有完成部分的动画块中(带有 )。

于 2013-01-02T09:34:35.817 回答