iOS学习笔记(十三)————滑动视图ScrollView与PageControl

/ 0评 / 0

我们现在的手机屏幕虽然已经够大了,但是还是不能展示太多的信息,所以就出现了滑动视图,能够延伸屏幕,扩大一个页面的信息量,在iOS的中实现滑动视图的控件 是 UIScrollView,其实就相当于一个容器,先设置好它的大小,然后设置好它的容量,接着在上面添加其他的控件,但是这个控件是可以滑动的,所以就能够展示更多的信息量。我们来看一下用法

- (void)viewDidLoad {
    [super viewDidLoad];
    //图片数组
    array =[[NSArray alloc] initWithObjects:[UIImage imageNamed:@"0.jpg"],[UIImage imageNamed:@"1.jpg"],[UIImage imageNamed:@"3.jpg"],[UIImage imageNamed:@"4.jpg"], nil];

    //	滑动视图
    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
    
    //    设置代理,当然在类头上要实现代理
    scrollView.delegate = self;
    scrollView.backgroundColor = [UIColor redColor];
    //    设置容量
    scrollView.contentSize = CGSizeMake(320*4,400);
    //   设置偏移量
    //    往左是正数   往右负数
    scrollView.contentOffset = CGPointMake(0, 0);
    
    //  设置是否分页
    scrollView.pagingEnabled = YES;
    //Horizontal 水平的
    //    Indicator  指示符
    scrollView.showsHorizontalScrollIndicator = NO;
    //    Vertical 垂直的
    scrollView.showsVerticalScrollIndicator = NO;
    
    //    bounces  回弹
    //    设置是否回弹
    scrollView.bounces = NO;
    
    [self.view addSubview:scrollView];


    //    往scrollview中添加图片视图
    for (int i = 0; i

这就是ScrollView的基本用法,下面再介绍一下一般与滑动视图配套使用的另一个控件 pageControl ,显示出来的其实就是我们看到的 banner 上面的小点,就是标注页数的控件

- (void)viewDidLoad {
    [super viewDidLoad];
   //UIPageControl 页面控制器
    pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(50, 420, 220, 50)];
    //    设置点数
    pageControl.numberOfPages = 4;
    //    获取最小的尺寸来显示你设置的点数
    CGSize size = [pageControl sizeForNumberOfPages:4];
    
    //    设置不是当前点的颜色
    pageControl.pageIndicatorTintColor = [UIColor yellowColor];
    //    设置当前点的颜色
    pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
    
    NSLog(@"%@",NSStringFromCGSize(size));
    pageControl.backgroundColor = [UIColor purpleColor];
    
    [pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
    
    [self.view addSubview:pageControl];
    
    
//    搞个定时器,自动切图
    [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}

static int i;

- (void)onTimer{
    int x = scrollView.contentOffset.x;
    if (x == 0) {
        i = 320;
    }
    
    if (x == 960) {
        i = -320;
    }
    
    [scrollView setContentOffset:CGPointMake(i + x, 0) animated:YES];
    pageControl.currentPage = (x + i) / 320;
    NSLog(@"%d",x);
    
    //    [view setContentOffset:CGPointMake(i + 320, 0) animated:YES];
    
}

- (void)changePage:(UIPageControl *)pageControl{
    //    点击page改变scrollview的偏移量
    //    获取当前的点数
    NSLog(@"当前的点数 %ld",pageControl.currentPage);
    int p = pageControl.currentPage;
    [scrollView setContentOffset:CGPointMake(p * 320, 0) animated:YES];
}

#pragma mark -
#pragma mark UIScrollViewDelegate

//已经结束减速的方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView1{
    //    NSLog(@"========");

    //    获取当前的偏移量
    CGPoint point = scrollView1.contentOffset;
    
    //    用偏移量对320取整
    int currentpage = point.x/320;
    NSLog(@"==== %d",currentpage);
    //    设置当前的点数
    pageControl.currentPage = currentpage;
}

来看一下效果~

ScrollView && PageControl

代码请查看 http://git.oschina.net/zcb1603999/LearningiOS

评论已关闭。