标签: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];
在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的拖拽事件,但是如果你很快的拖动,它还是会执行的,但是你点击一个点然后缓慢拖动的话,你就会发现其中的奥秘了哦
当然还有一些隐藏的秘密需要小伙伴们来发现哦
小弟这期就介绍这么多吧
祝大家工作顺利哦
本文出自 “东软iOS校友群的技术博客” 博客,请务必保留此出处http://neusoftios.blog.51cto.com/9977509/1631542
标签:ios
原文地址:http://neusoftios.blog.51cto.com/9977509/1631542