定时滚动轮番ScrollView

来源:互联网 发布:js获取设备ip 编辑:程序博客网 时间:2024/05/22 01:43
  • 首先在“.h”文件中添加“UIScrollViewDelegate”
    这里写图片描述

  • “ .m”文件定义全局变量

@interface ViewController (){    UIScrollView *_scrollView;    UIPageControl *_pageControl;    int timeCount;}
  • 设置轮番
- (void)setScrollView{    //设置轮番滚动视图    _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, scrollViewHeight)];    _scrollView.contentSize = CGSizeMake(screenWidth*5, scrollViewHeight);//内容尺寸宽高设置    _scrollView.bounces = NO;//控制滚动视图能否超出内容边缘再弹回    _scrollView.showsHorizontalScrollIndicator = NO;//不显示水平滚动条    _scrollView.showsVerticalScrollIndicator = NO;//不显示纵向滚动条    _scrollView.pagingEnabled = YES;//可以翻页滑动    _scrollView.delegate = self;//设置代理    _scrollView.tag = 101;    [self.view addSubview:_scrollView];    //ScrollView图片名称容器数组    NSArray *topScrollArray = [[NSArray alloc] initWithObjects:@"01.jpg",@"02.jpg",@"03.jpg",@"04.jpg",@"05.jpg", nil];    for (int i=0; i < 5; i++) {        //设置轮番页上的图片        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake( i*screenWidth, 0, screenWidth, scrollViewHeight)];        imageView.image = [UIImage imageNamed:topScrollArray[i]];        imageView.userInteractionEnabled = YES;        [_scrollView addSubview:imageView];    }    //分页控制器    _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake((screenWidth-100)/2, scrollViewHeight-20, 100, 20)];    _pageControl.tag = 102;    _pageControl.numberOfPages = 5;    _pageControl.currentPageIndicatorTintColor = [UIColor colorWithWhite:1 alpha:0.6];    _pageControl.pageIndicatorTintColor = [UIColor whiteColor];    [self.view addSubview:_pageControl];    //使用NSTimer实现定时触发scrollview滚动。    timeCount = 0;    [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(scrollTimer) userInfo:nil repeats:YES];}
  • 编写代理方法
// scrollview 减速停止时设置pagecontrol(用于控制page当前页) - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{    if (scrollView.tag == _scrollView.tag) {        int current = scrollView.contentOffset.x / screenWidth;        _pageControl.currentPage = current;        timeCount = current;    }}
// 轮番页定时滚动,timeCount为全局量,避免定时滚动与手动滑翻冲突-(void)scrollTimer{    timeCount ++;    if (timeCount == _pageControl.numberOfPages) {        timeCount = 0;    }    [_scrollView scrollRectToVisible:CGRectMake(timeCount * screenWidth, 0, screenWidth, scrollViewHeight) animated:YES];    _pageControl.currentPage = timeCount;}
  • 调用轮番设置方法
- (void)viewDidLoad {    [super viewDidLoad];    [self setScrollView];}

注:scrollview 属性(参考文章http://www.verydemo.com/demo_c134_i6754.html)

 alwaysBounceHorizontal布尔值,规定是否在水平方向在滚动到末尾时产生“反弹”。若该属性及bounces被设定为YES,水平拖拽即使在内容小于滚动视图边缘时也被允许。默认值为NO
alwaysBounceVertical布尔值,规定是否在垂直方向在滚动到末尾时产生“反弹”。若该属性及bounces被设定为YES,垂直拖拽即使在内容小于滚动视图边缘时也被允许。默认值为NO
bounces布尔值,控制是否滚动视图能否超出内容边缘再弹回。若该属性的值为YES。滚动视图会在遇到内容边缘时反弹。若值为NO,滚动会在达到边缘时立即停止而不反弹。默认值为YES
bouncesZoom布尔值,规定滚动视图是否在缩放超出最大值和最小值动画时播放内容缩放动画。若该属性的值为YES,在缩放超出最大值或最小值时,滚动视图会临时播放一个稍超出限制范围的动画再返回限制大小。若该属性为NO,缩放会在达到限制大小时立即停止,默认为YES
canCancelContentTouches布尔值,控制触摸内容视图时是否总是导致跟踪。若该属性的值为YES,内容中的视图会开始跟踪触摸的手指,若用户拖拽手指到足以滚动的距离,视图会收到touchesCancelled:withEvent:信息,而滚动视图会作为一个滚动事件处理这次触摸。若该属性的值为NO,滚动视图在内容视图开始跟踪时将无视手指移动,不进行滚动。
contentInset表示内容视图从封闭滚动视图中被嵌入的距离。用该属性增加围绕内容的滚动区域。单位为点。默认值为UIEdgeInsetssZero。
contentOffset表示从滚动视图的原点到内容视图的原点的偏移的点。默认值为CGPointZero。
contentSize内容视图的大小。单位是点。默认值是CGSizeZero。
decelerating返回滚动视图中的内容是否在提起手指后继续移动。(只读)若用户已不再拖拽内容但滚动还在发生时返回YES
decelerationRate浮点数,规定用户提起手指后的滚动减速速率。你的应用程序可以使用UIScrollViewDecelerationRateNormal和UIScrollViewDecelerationRateFast常量作为引用点以获得一个合理的减速速率。
delaysContentTouches布尔值,规定滚动视图是否延迟处理触摸下压手势。若该属性值为YES,滚动视图会延迟处理下压手势直到可以确定该操作的意图是否是滚动。若值为NO,滚动视图会立即调用touchesShoudBegin:withEvent:inContentView:。默认值为YES
 directionalLockEnabled布尔值,规定是否滚动在某一方向上被禁止。若该属性为NO,滚动在水平和垂直方向上都被允许。若该属性为YES,当用户开始某一方向的滚动(水平或垂直),滚动视图会禁止另一方向的滚动。若以对角线方向拖动,滚动则不会被锁定且用户在本次拖动完成之前可以在任意方向拖动。默认值为NO
dragging布尔值,表明用户是否开始滚动内容。该属性持有的值可能需要滚动一段时间或距离才会被设定成YES
indicatorStyle滚动控制器的风格。默认风格是UIScrollViewIndicatorStyleDefault。参见“Scroll Indicator Style”获取更多关于此常量的描述。
maximumZoomScale浮点数,指定可被应用滚动视图内容的最大缩放因子。该值规定了内容可被放大到多大。默认值为1.0。
minimumZoomScale浮点数,指定可被应用滚动视图内容的最小缩放因子。该值规定了内容可被缩小到多小。默认值为1.0。
pagingEnabled布尔值,规定滚动视图是否可以翻页。若该值为YES,滚动视图会在用户滚动时停止在滚动视图边框的整数倍处。默认值为NO
panGestureRecognizer当前用于滑动手势的手势识别器(只读)在希望更加精确地控制被滚动视图识别的滑动手势时,你的应用程序可访问此属性。
pinchGestureRecognizer当前用于扩张/收缩手势的手势识别器(只读)在希望更加精确地控制被滚动视图识别的扩张/收缩手势时,你的应用程序可访问此属性。
scrollEnabled布尔值,规定是否允许滚动。若该属性的值为YES,允许滚动,若为NO,禁止滚动。默认值为YES。当滚动被禁止时,滚动视图将不再接受触摸事件;滚动视图会将事件传送至响应链中。
scrollIndicatorInsets表示滚动指示器从封闭滚动视图中被嵌入的距离。默认值为UIEdgeInsetssZero。
scrollToTop布尔值,控制滚动至顶部的手指是否有效。滚动至顶部手势是触摸状态栏;当此属性为YES时,滚动视图在此手势发生时跳转至状态栏。此属性默认为YES。该手势作用于单个可见的滚动视图;若有多个滚动视图(例如,日期选择器)设定了这个属性,或者若托管在scrollViewShouldScrollToTop:中返回了NOUIScrollView会无视滚动到顶部的请求。在滚动视图滚动到内容视图的顶部之后,它会给托管发送一个scrollViewDidScrollToTop:信息。
showsHorizontalScrollIndicator布尔值,控制是否水平滚动指示器可见。默认值为YES。指示器会在跟踪时显示并在跟踪之后消失。
showsVerticalScrollIndicator布尔值,控制是否垂直滚动指示器可见。默认值为YES。指示器会在跟踪时显示并在跟踪之后消失。
tracking返回用户是否触摸内容并初始化滚动。(只读)若用户已触摸内容视图但可以还示开始拖动时该属性值为YES
zoomBouncing布尔值,表明缩放已超过了指定接收器的缩放限制。若滚动视图缩放超出最大值或最小值时该值为YES;否则值为NO
zooming布尔值,表明内容视图当前是否在缩。若用户发出了一个缩放手指,该值为YES,否则为NO
zoomScale浮点数,指定当前应用于滚动视图的内容的缩放因子。该值规定了内容当前缩放了多少。默认值是1.0。
0 0
原创粉丝点击