一个UIScrollview,自动滚动并在每个页面停止至少2秒

时间:2014-05-23 14:29:42

标签: ios uiscrollview

我正在使用 NSTimer 来浏览我的 UIScrollview ,但是我不能让它停在每个页面上,就像让我们说一两秒这样的用户如果他们想要或者当他们在 UIScrollview 中滚动图片时,可以预览和点击我的代码,如下所示... :

    -(void) onTimer {

CGPoint rightOffset = CGPointMake(responseScroll.contentSize.width - responseScroll.bounds.size.width, 0);
[responseScroll setContentOffset:rightOffset animated:YES];
}


 -(void)viewDidLoad {

 /-------/
 [NSTimer scheduledTimerWithTimeInterval:0.008 target:self selector:@selector(onTimer)   userInfo:nil repeats:YES]; 
 }

3 个答案:

答案 0 :(得分:2)

定时器间隔为2.0:

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];

这意味着计时器将每2秒触发一次。

如果您要翻页,则需要调整onTimer方法:

CGPoint rightOffset = CGPointMake(responseScroll.contentOffset.x + responseScroll.frame.size.width, 0);
[responseScroll setContentOffset:rightOffset animated:YES];

答案 1 :(得分:0)

考虑使用UIAnimations

-(void)viewDidLoad{
    [self moveScrollView];
}

-(void)moveScrollView{
    CGPoint rightOffset = CGPointMake(responseScroll.contentOffset.x+responseScroll.bounds.size.width, 0);
    if(rightOffset.x+responseScroll.bounds.size.width<=responseScroll.contentSize.width){
        [UIView animateWithDuration:1 animations:^{
           [responseScroll setContentOffset:rightOffset animated:NO];
        } completion:^(BOOL finished) {
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
                [self moveScrollView];
            });
        }];
    }
}

答案 2 :(得分:0)

这是我的答案,这很快。这将无限滚动滚动视图中的页面。

private func startBannerSlideShow()
{
    UIView.animate(withDuration: 6, delay: 0.1, options: .allowUserInteraction, animations: {
        scrollviewOutlt.contentOffset.x = (scrollviewOutlt.contentOffset.x == scrollviewOutlt.bounds.width*2) ? 0 : scrollviewOutlt.contentOffset.x+scrollviewOutlt.bounds.width
    }, completion: { (status) in
        self.startBannerSlideShow()
    })
}