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

继中级篇后呢,我们在这里做一下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];

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


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

然后在ScrollView的Delegate方法里面也关联一下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的拖拽事件,但是如果你很快的拖动,它还是会执行的,但是你点击一个点然后缓慢拖动的话,你就会发现其中的奥秘了哦


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


小弟这期就介绍这么多吧


祝大家工作顺利哦




时间: 2024-08-02 05:21:52

进阶篇第五期:UIScrollView的那点事儿的相关文章

中级篇第五期:初识UIScrollView

UIScrollView是我们在iOS开发中最常用的UI控件之一,包括它的子类tableView也是非常常用呢,那么本期小弟就来介绍一下UIScrollView的基础知识咯 在我们工作当中呢,有很多功能都是基于ScrollView的基础上的,所以我们要先了解系统的ScrollView到底能做哪些事情呢 首先初始化一个ScrollView       UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(

swift篇第五期:UITableView,OC与Swift互调

先写一个UITableView的简单创建吧,经过前面几期的内容,那么创建一个常用的控件也是蛮简单的哦   class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSURLConnectionDataDelegate {          var dataArray = NSMutableArray()     var tableView: UITableView?     overr

IOS开发——UI进阶篇(五)通知、代理、kvo的应用和对比,购物车

一.通知 1.通知中心(NSNotificationCenter)每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信任何一个对象都可以向通知中心发布通知(NSNotification),描述自己在做什么.其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知 2.通知(NSNotification)一个完整的通知一般包含3个属性:- (NSString *)name; // 通知

进阶篇第六期:我称它为“交互式开发思想”

最近一直在做项目,在项目中呢也遇到了某些问题,比如为一个状态点赞或者是踩,那么按钮的状态会随之改变,但是这个过程是要发送请求的,也就是说我们要在请求回来以后才改变状态,于是小弟就有了一个大胆的想法,那么我的这个想法呢,就是以交互为主,开发逻辑为辅,让交互设计融入开发代码之中,所以我称它为:交互式开发思想,希望可以帮助小伙伴哦 主要就是下面这两个图的效果,也就是点击的时候让它有反应,当请求过后还要再次回调进来,比如请求成功,我们就不用改变它的状态,但是请求失败,我们就要将原来的状态改变,而我们正常

娱乐篇第五期:互联网的事情you意思(五)

小女孩儿光脚带铁链乘公交的新闻,真是让人不知道说什么好,也许是拐卖,也许是家庭原因,现在这社会,谁敢管别人的闲事呢 大妈天安门前跳广场舞的事情真是让小弟亮瞎了双眼啊,真是时尚时尚最时尚 广东惠州水浮莲成灾~~两江变成大草原,帅气哦 4月6日是小米公司五周年的日子,听说小米公司的待遇还不错,雷军哥哥的声望也比较好哦 雷军回忆创业初说过的一句话:那个时候的我们,很少谈梦想,因为这个梦想过于宏大而注定被耻笑 企业订餐平台"美餐",也许他们真的不是在做外卖,而是要构建面向企业消费市场的吃喝玩乐

随心篇第五期:在移动互联网中生存

2015这一年,在移动互联网的趋势以及市场,应该不外乎这两个 一是医疗领域:巨头公司正在做,两会上也有提: 二是外卖领域:看看今年比较火的"饿了吗,美团外卖,包括最近的美餐" 我想一名软件开发工程师,重要的也许不是身处哪家公司,而是置身于哪个项目,就像之前某校友给我的建议那样,不要为了眼前的利益,而要为了长远的梦想 有些公司如果没有给出邀请你加入并参与的明确项目的话,小弟劝你不要去,我觉得有些事情并不像我们想象的那样靠谱 移动互联网,貌似是个新词,又貌似对我们而言再熟悉不过,但是我们对

Hibernate进阶篇(五)——hbm.xml配置文档

转载请注明:http://blog.csdn.net/uniquewonderq <hibernate-mapping> schema="schemaName"//设置格式名字 catalog="catalogName"//设置目录名称 default-cascade="cascade_style"//级联风格 default-access="field|property|ClassName"//访问策略 defa

进阶篇第十期:单例的运用

说起单例,小伙伴们应该并不陌生了吧,它是设计模式中的一种,iOS开发中比较常见 说一下我们为什么要用单例吧 主要是我们想在项目的运行过程中,一直持有某个对象的内存,而不去释放它,随用随拿 但是要注意的地方就是初始化的时候,请不要在初始化方法里面添加耗时操作,只要添加一些较简单的就好 比如我们在做一个功能,类似百度贴吧的发帖功能吧,那么这里的发帖又分为在某贴吧.某群组.某个圈子去发帖,或者说发的帖子要删掉,发送失败的帖子要保存,好多复杂的逻辑 那么这时候我们就要去选择单例来处理,因为我们随时可调,

经验篇第五期:群里的那点事儿(五)

问题1:关于隐藏NavigationBar出现小黑屏的BUG 问题2:关于TableView的footerView问题 问题3:关于设置textField的字数限制问题 好啦,本期的问题解答就这么多哦,欢迎小伙伴们来群里提问,帮比人解答问题哦