码迷,mamicode.com
首页 > 其他好文 > 详细

进阶篇第五期:UIScrollView的那点事儿

时间:2015-04-12 19:31:27      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:ios


继中级篇后呢,我们在这里做一下ScrollView的简单使用哦


废话不多说啦,先用代码来为scrollView里面加一些视图吧


 
- (void)buildSubViewsInScrollView:(UIScrollView *)scrollView {
    for (int i = 0; i < scrollView.contentSize.width / CGRectGetWidth(scrollView.bounds); i++) {
        for (int j = 0; j < scrollView.contentSize.height / CGRectGetHeight(scrollView.bounds); j++) {
            UIView *infoView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetWidth(scrollView.bounds) * i, CGRectGetHeight(scrollView.bounds) * j, CGRectGetWidth(scrollView.bounds), CGRectGetHeight(scrollView.bounds))];
            [self addButtonForView:infoView];
            infoView.backgroundColor = [self randomColor];
            [scrollView addSubview:infoView];
        }
    }
}


这个时候我们需要为每个视图设置一个随机色,好,那就写个简单的随机色方法

 
- (UIColor *)randomColor {
    CGFloat rColor = arc4random() % 256 / 256.0;
    CGFloat gColor = arc4random() % 256 / 256.0;
    CGFloat bColor = arc4random() % 256 / 256.0;
    
    return [UIColor colorWithRed:rColor green:gColor blue:bColor alpha:1];
}


接下来我们再初始化一个UIPageControl来配合UIScrollView来做这件事情


 
    UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 50, CGRectGetWidth(self.view.bounds), 50)];
    pageControl.numberOfPages = 5;
    [pageControl addTarget:self action:@selector(setPageControlCurrentPage:) forControlEvents:UIControlEventValueChanged];
    self.pageControl = pageControl;
    [self.view addSubview:pageControl];


PageControlAction里面设置好改变Index的时候,ScrollView也跟着变哦


 
- (void)setPageControlCurrentPage:(UIPageControl *)pageController {
    [self.scrollView setContentOffset:CGPointMake(pageController.currentPage * CGRectGetWidth(self.scrollView.bounds), 0) animated:YES];
}


然后在ScrollViewDelegate方法里面也关联一下PageControl


  
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSInteger pageNum = scrollView.contentOffset.x / CGRectGetWidth(self.scrollView.bounds);
    [self.pageControl setCurrentPage:pageNum];
}


好咯,基础的ScrollView的使用基本完成了哦,运行程序吧,是不是感觉很有意思呢


下面我们来介绍两个好玩的属性吧

但是需要在ScrollView里面的每个小View里面加入一个按钮,来配合ScrollView来处理这件有意思的事情哦,所以先创建按钮咯


 
- (void)addButtonForView:(UIView *)view {
    UIButton *testButton = [UIButton buttonWithType:UIButtonTypeCustom];
    testButton.frame = CGRectMake(250, 400, 80, 80);
    testButton.backgroundColor = [self randomColor];
    [testButton addTarget:self action:@selector(testActionButton:) forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:testButton];
}


然后我们来改变这两个属性吧,看一看效果如何

首先是它咯


 
    scrollView.delaysContentTouches = NO;


然后是它咯


    
    scrollView.canCancelContentTouches = NO;


我们总结一下它们两个有什么特殊的意义吧


前者呢,是取消ScrollView的当前处理事件,立即执行所在区域内的子视图的处理事件,当然咯,如果没有子视图,就不会有任何影响了哦


后者呢,组织调用ScrollView的拖拽事件,但是如果你很快的拖动,它还是会执行的,但是你点击一个点然后缓慢拖动的话,你就会发现其中的奥秘了哦


当然还有一些隐藏的秘密需要小伙伴们来发现哦


小弟这期就介绍这么多吧


祝大家工作顺利哦





本文出自 “东软iOS校友群的技术博客” 博客,请务必保留此出处http://neusoftios.blog.51cto.com/9977509/1631542

进阶篇第五期:UIScrollView的那点事儿

标签:ios

原文地址:http://neusoftios.blog.51cto.com/9977509/1631542

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!