1.在scroView上拖一个imageView 设置其大小,然后设置contentSize的大小,只能用代码设置。在设置contentOffSet属性(contentOffSet的属性特点,是一个point设置成正值向上移动)。contentInSet = UIEdgeInSetMake(a, b, c, d);他的值是scrollView的边距进行增加
项目一:喜马拉雅分析
1.分析页面结构
2.要在stroryBoard上拖控件
(1)分次序,添加九宫格的算法
(2)设置contentSize 通过获取最大的Y只获取size的Y值,如果是一些常量,尽量使用宏定义,方便修改
(3)注意autoLayOut
(4)添加按钮,控制属性变化并记录当前位置,修改contentOffSet属性
3.使用代理步骤
1>声明协议
2>设置代理
3>实现协议中的方法
scrollView操作是调用的方法,实现协议中的方法
用户开始拖拽时某个scrollView时调用()
缩放使用,监听手势的捏合,viewForZoomingInsscrollView方法
(1)设置缩放内容
(2)设置缩放范围
设置scrollView的maxmumZoomScale = .5 (设置放大的范围)
在模拟器上按住option键进行缩放
4.图片轮播
1.UI
1>scrollView :分析UI如何实现,用代码创建,
2>图片 :通过FOR循环创建5个imageView,这个每个imageView的x值,及其frame添加到scrollView中
3>UIPageControll (在storyBoard中添加pageControl控件,注意不要添加到scrollView里面,不要直接拖,要通过修改Y值来放到scrollView上面)
2.业务逻辑
1>拖动:设置scrollView的分页属性 pagingEnable = yes;
2>设置页码 :在代理中设置页码,获取scrollView的contentOffset属性,计算出对应的页码,将页码赋值给pageControl的currentPage属性。计算的算法为:(当前的offset.x + 屏幕宽度的一半)/ 屏幕的宽度;
3>自动滚动:添加定时器,两种方法。首先声明NSTimer对象,一种通过timerWithTimeInterval设置,另一种是通过scheduleTimeWithTimeInterval。然后将定时器添加到主时钟上。两种方式的区别:1. scheduleTimeWithTimeInterval只能同时响应一个事件,要么是定时器事件,要么是用户操作如拖拽事件。如果同时发生,优先执行用户事件。而timerWithTimeInterval需要将定时器手动添加到主循环中,模式有两种,一种是NSRunLoopDefaultmode,另一种是NSRunLoopComonModes。这种模式可以同时响应两种事件。
通过代理的方式,当拖拽时使用scrollViewWillBeginDragging方法,去掉定时器。方法是调用NSTimer中的invalidate方法停止定时器,并且使timer = nil;
停止拖拽时调用scrollViewDidEndDragging方法,添加定时器,调用添加方法即可。