本周的课程内容好多,工程管理还有View层次和属性、事件与手势这些笔记还没整理好,索性就把做本周作业的思考先记录下来好啦,花了不少时间在网上找资料,总结一下方便自己以后查阅。
本周的作业要求将ScrollView与PageControll结合使用,做出类似于滚动banner的效果。以下便是做作业时的思路。
首先是代码编辑前的准备:
1.首先准备好几张图片,将他们统一格式命名如:image1、image2等等,将其拖进项目里,最好以一个group的形式放置,方便管理。
2.在Interface Builder中将ScrollView和PageControll拖进ViewController中,最好将ScrollView的宽度与ViewController等宽,方便后续的计算。
3.将ScrollView和PageControll通过IBOutlet关联至ViewController。
然后是代码编辑阶段:
1.在ViewController的m文件中关联协议<UIScrollViewDelegate>。
2.在viewDidLoad中实现设置好ScrollView和PageControll:
设置PageControll的页数和起始页、取消ScrollView的边缘弹跳效果、设置ScrollView的内容区域大小(宽度=ScrollView的宽度*分页页数)、设置scrollView的内容坐标零点、启动分页功能(self.scrollView.pagingEnabled=YES)、关闭水平滚动条(self.scrollView.showsHorizontalScrollIndicator = NO)。最后有两个关键,一个是self.scrollView.delegate=self必须要写进代码里,这样才能使用方法scrollViewDidScroll:(UIScrollView *)。还有就是调用自己构造的方法来创建分页内容。
3.构造创建分页内容的方法:
需要注意的是每一页的坐标零点位置的x值随着分页的页数而成倍变化(x=ScrollView的宽度*分页页数),其余宽高均与ScrollView相同。然后利用[UIImage imageNamed:[NSString stringWithFormat:@""]来加载每个分页的图片,最后需要设置图片模式还有令clipsToBounds = YES来防止不同分页间的图片互相覆盖。最后别忘了将创建的分页加载为ScrollView的SubView。
4.将PageControl的页数变化与ScrollView的滚动操作结合:
调用scrollViewDidScroll:(UIScrollView *)方法,在每次滚动时计算当前处于哪一页,并将PageControl.currentPage设置为计算出的当前页数。这里计算的方法很重要,可以利用ScrollView.contentOffset的x值除以ScrollView的宽度来获得当前页数。
这里的contentOffset的官方解释如下:
contentOffset : A CGPoint value that defines the top-left corner of the scroll view bounds.
即偏移量,滚动视图的bounds的origin点的意思。
虽然作业是做完了,但是课程内的内容好多都没搞懂,这段时间下得功夫不够,该反省自勉一下了QAQ。