如何使UICollectionView弹跳以说明可滚动性?

时间:2015-10-14 13:07:14

标签: ios uikit uicollectionview uikit-dynamics

我已经看过很多应用程序,当你第一次启动它们时,它们会移动或反弹,以证明你可以滚动一些乍一看可能不太清楚的东西。

我有一个显示单个单元格的UICollectionView,我想在第一次使用应用程序时直观地向用户显示相关区域是否可滚动。我已经看过UIKit Dynamics,但所有内容都集中在控件正常使用过程中的动画效果。我想强制收集视图就好像有人滚动一点,然后释放它(有一些额外的反弹强调)。有什么指针吗?

2 个答案:

答案 0 :(得分:1)

所以我尝试了多个动画功能,但你基本上需要的是两个动画,一个用于向上,一个用于向下。我想出了这个代码,它使用了关键帧动画。

[UIView animateKeyframesWithDuration:1.0 delay:0.6 options:UIViewKeyframeAnimationOptionCalculationModeCubicPaced animations:^{

    // scroll up in 40% of the duration
    [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:0.4 animations:^{
        NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:1 inSection:0];
        [self.tableView scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
    }];

    // scroll down starting at 40% of the duration until the end of the duration
    [UIView addKeyframeWithRelativeStartTime:0.4 relativeDuration:0.6 animations:^{
        NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
        [self.tableView scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
    }];

} completion:^(BOOL finished) {
    NSLog(@"Animation complete!");
}];

您可以根据自己的喜好调整动画以产生更多结果,但请注意,在函数addKeyframeWithRelativeStartTime: relativeDuration: animations:中,开始时间和持续时间是相对的,因此整个持续时间的值为0.0到1.0这是在animateKeyframesWithDuration: delay: options: animations:

中指定的

通常在加载tableView中的数据时调用它。此外,如果是第一次(stored in the NSUserDefaults),您还需要添加一个检查。

-

修改 如果您想要按点数指定,而不是整个项目行,您还可以使用:

[self.tableView setContentOffset:CGPointMake(0.0, 10.0)];

[self.tableView setContentOffset:CGPointMake(0.0, 0.0)];

尊敬。

这也适用于集合视图,您也可以水平或对角滚动(取决于您设置坐标的方式)。

答案 1 :(得分:0)

是的,我在我的代码中遇到了同样的问题,我想做的是使用关键帧动画animateKeyframesWithDuration的跳跃式动画,但是底部的新单元格出现了当第一部分动画发生时有点奇怪,(从(0,0)开始,尺寸变大,从左上方飞入),好像是系统默认的collectionViewCell动画。我没有找到如何禁止单元格默认动画。