【问题标题】: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 中搜索并找到任何东西

【问题讨论】:

    标签: iphone objective-c ios ios5


    【解决方案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% 理解你的评论。你能说得更具体点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多