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

Ios 如何使UICollectionView反弹以说明可滚动性?,ios,uikit,uicollectionview,uikit-dynamics,Ios,Uikit,Uicollectionview,Uikit Dynamics,我见过很多应用程序,当你第一次启动它们时,它们会移动或反弹,以证明你可以滚动一些乍一看可能不清楚的东西 我有一个UICollectionView,它只显示一个单元格,我想在用户第一次使用应用程序时,直观地向用户显示该区域是可滚动的。我看过UIKit Dynamics,但所有内容都关注在正常使用控件的过程中如何设置动画。我想强制集合视图的行为就像有人滚动一点,然后释放它(为了强调,有一些额外的反弹)。有指针吗?所以我尝试了多个动画功能,但基本上需要两个动画,一个用于向上,一个用于向下。我提出了这段

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


我有一个UICollectionView,它只显示一个单元格,我想在用户第一次使用应用程序时,直观地向用户显示该区域是可滚动的。我看过UIKit Dynamics,但所有内容都关注在正常使用控件的过程中如何设置动画。我想强制集合视图的行为就像有人滚动一点,然后释放它(为了强调,有一些额外的反弹)。有指针吗?

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

[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:RelativeEduation:animations:
中,开始时间和持续时间是相对的,因此在
animateKeyframesWithDuration:delay:options:animations:
中指定的整个持续时间的0.0到1.0之间的值

通常在加载tableView中的数据时调用此函数。此外,您还需要添加一个检查是否是第一次()

--

编辑: 如果只想滚动一点(由点数指定),而不是滚动整个项目行,还可以使用:

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

恭敬地


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

是的,我在代码中遇到了相同的问题,我想做的是使用关键帧动画进行上下跳跃动画,
animateKeyframesWithDuration
,但是当第一部分动画发生时,底部的新单元看起来有点奇怪,(从(0,0),大小变大,从左上角飞入),它看起来像是系统默认的collectionViewCell动画。我不知道如何禁止单元格默认动画。

使用animationPetar将偏移量更改为一个值并恢复正常-谢谢,我按照您的建议做了(动画内容偏移量为50,0,然后将其设置为0,0)。奇怪的是,当它移动到第一个状态时,你可以看到下一个单元格,但当我将动画设置回0,0时,下一个单元格就会消失。知道为什么吗?嗯,你能用一个看起来像你手机的虚拟视图来破解它吗?谢谢你的回复Maco03。我使用的是集合视图,而不是表视图。我修改了集合视图的示例,但我只想显示下一个单元格的一小部分,而不是整个单元格。不幸的是,与Petar评论中的问题类似,我看不到下一个单元格出现此动画。使用
[UIView animatedWithAnimation]
没有这个问题,但也有“副作用”,在第一部分和第二部分动画之间有一点停顿
[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!");
}];