具有分页动画自动的滚动视图

Posted

技术标签:

【中文标题】具有分页动画自动的滚动视图【英文标题】:UIscrolview with paging annimated automatic 【发布时间】:2012-01-23 12:10:24 【问题描述】:

我有一个带有分页功能的 scrollview 它是一个带有 4 张图片的幻灯片的滚动视图 它可以很好地与用户交互,所以我的问题是我想在没有用户交互的情况下设置这个 scrollview scroll automatique 所以就像酒吧的横幅这是我的代码视图加载:

 [UIScrollView beginAnimations:nil context:nil];
    [UIScrollView setAnimationDuration:4.0];

[UIScrollView setAnimationDelay:4.0];
[scroller setContentOffset:CGPointMake(320, 98)];      
[UIScrollView commitAnimations ];

在这种情况下,卷轴自动工作,但问题是卷轴等待 4 秒,然后转到第二张图像并停止,如果我添加此代码

[UIScrollView beginAnimations:nil context:nil];
[UIScrollView setAnimationDuration:4.0];
[UIScrollView setAnimationRepeatAutoreverses:YES];
[UIScrollView setAnimationRepeatCount:INFINITY];
[UIScrollView setAnimationDelay:4.0];




[scroller setContentOffset:CGPointMake(320, 98)];

[UIScrollView commitAnimations ];

滚动条在显示第二张图片后不会停止 4 秒,因此在这种情况下,如果动画开始后,它会在前 4 秒停止,永远不会停止

所以我的问题是我想这样做:

image 1 ---显示 fo 4 s -----image2 ----显示 4s ----- image3 ----显示 4s ----image 4 ----显示4 s ----- 图像 1 ---- 显示 4 s ...... 像这样自动

因此,如果有人可以帮助我提供示例代码或教程或任何文档,那将非常酷,因为我在 google 中搜索并找到任何东西

【问题讨论】:

【参考方案1】:

我在我之前的回答中做了一个例子: UITableView scroll smooth with certain speed?

如果您可以解密您需要进行的更改,那么这个示例对您来说将非常相关。

以下是您需要做的: 在您想要启动动画的那一刻(甚至在页面上的开始或选择处),您需要启动计时器。然后在某个自定义时间间隔内,您可以触发一个方法,将 contentOffset 设置为稍微向右(适当地更改 Y 值)。当您到达页面末尾或运行目标方法 x 次(ezily 存储在属性/全局 val 中)时,您可以使计时器无效。

看看我发布的问题,你会发现其中的每一块拼图。 你会想办法的。

祝你好运。

【讨论】:

哇,谢谢你的帮助,它工作正常,但是如果我在 viewdidload 中使用了 nstimer,它会在加载视图后停止,所以我的应用程序基于 uivewcontroller? 我建议你把它放在ViewDidAppear中。还要确保不要过早地使计时器失效。 感谢您的帮助,但在 viewdidAppear 中也出现了同样的问题,就像视图加载了一样 你很可能在 NSTimer 上做错了什么。你能把这段代码贴在你加载 VC 的地方,然后把计时器放在 loadview 或 viewdidappear 中,然后告诉我你认为它应该如何工作。【参考方案2】:

创建一个间隔为 4 秒的 NSTimer。

让这成为火法:

- (void)timerFireMethod 
    horOffSet = horOffSet + 320;
    //CGFloat horOffSet is an instance variable of the ViewController.
    //init as 0; I assume the width is 320. Any other width possible

    [scroller setContentOffset:CGPointMake(horOffSet, 98) animated: YES];

    if (horOffSet == 3*320) 
        horOffSet = 0;
    

【讨论】:

也感谢这段代码是有效的,但我在哪里但是 nstimer 因为我希望在 lanch 视图中工作,然后如果我在第二个停止后创建一个大的间隔计时器,那么视图确实加载了所以任何帮助?再次感谢 你确定你的 NSTimer 重复吗?我真的很抱歉,但我不能 100% 理解你的评论。你能说得更具体点吗?

以上是关于具有分页动画自动的滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

具有滚动效果的页面视图控制器与启用分页的 UIScrollView

IOS:在带有动画的 ImageView 下禁用滚动视图

在具有多个部分的 tableView 中滚动时使用平滑动画更改视图背景渐变颜色

UIScrollView 分页动画

分页uiscrollview自动滚动到第一页

带有分页的水平滚动视图中的全宽标签