1,当SCROLLVIEW宽度与放里面的IMAGEVIEW一样时,可实现拖拽下一张图片,自动将下一张图片填充满当前scrollView的长宽(scrollView.pagingEnabled = YES; //设为YES时,会按页滑动);要实现点击按钮翻页,其实原理是通过修改scrollview的contentOffset值:[self.scrollView setContentOffset:offset animated:YES];
自动翻页,可添加定时器:NSTimer
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
删除定时器:
[self.timer invalidate];
self.timer = nil;
a, 添加pageControl控件显示分页导航
b,设置scrollView的pageEnable为YES
c,设置pageControl的总页数值
d, pagecontrol分页导航要动态变化,需要通过scrollView代理对象去实现scrollview相关的代理方法进行页数的监控,来动态修改pagecontrol的currentpage属性;
例如指定scrollview的代理对象为当前控制器:self.scrollView.delegate = self;
/**
* 当scrollView正在滚动就会调用
*/
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
self.pageControl.currentPage = page;
}
/**
* 开始拖拽的时候调用
*/
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
// 停止定时器(一旦定时器停止了,就不能再使用)
[self removeTimer];
}
/**
* 停止拖拽的时候调用
*/
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
// 开启定时器
[self addTimer];
}
e,UI控件定义为单线程模式时(nonatomic:主线程:刷新UI,从线程:监听事件),如果对一个UI控件持续做拖拽操作,那么主线程被当前的操作占用后,其他控件就不能自动刷新UI了(例如其他scrollView实现的自动图片翻页效果的刷新),可以通过高速当前消息循环对象,在其他UI控件占用主线程时,也同时分配一定时间给当前UI控件去刷新UI;
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
2,scrollView三个属性
a, contentSize: 可以滚动的最大长度和宽度,如果不允许滚动,设置为0,值为SIZE类型
b, contentOffset: scrollView与0,0坐标的距离
c, contentInset: 外边距,不增加contentOffset值
3,喜马拉雅 和 图片浏览器整合 布局