关于无限循环轮播的方法:如果有5张图片就5123451来设置
//这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)
self.scorllView.contentSize = CGSizeMake(imageW * IMAGE_COUNT, 0);
CGPoint offset = [self.scorllView contentOffset];
[self.scorllView setContentOffset:CGPointMake(-10, -10)]
[self.scorllView setContentOffset:CGPointMake(-10, -10) animated:YES];//动画效果
self.scorllView.bounces = NO;
self.scorllView.contentInset = UIEdgeInsetsMake(10, 10, 20, 30);
self.scorllView.scrollEnabled = NO;
self.scorllView.showsHorizontalScrollIndicator = NO;
self.scorllView.showsVerticalScrollIndicator = NO;
self.scrollView.pagingEnabled = YES;
self.scrollView.contentSize = self.miniView.image.size;
self.scrollView.maximumZoomScale = 2.0;
CGSize contentSize:设置UIScrollView的滚动范围
CGPoint contentOffset:UIScrollView当前滚动的位置
UIEdgeInsets contentInset:增加滚动视图四周的增加滚动范围
BOOL bounces是否有弹簧效果
BOOL scrollEnabled是否能滚动
BOOL showsHorizontalScrollIndicator是否显示水平方向的滚动条
BOOL showsVerticalScrollIndicator是否显示垂直方向的滚动条
UIScrollViewIndicatorStyle indicatorStyle设定滚动条的样式
BOOL dragging是否正在被拖拽
BOOL tracking按住手指还没有开始拖动的时候值是YES,否则NO
BOOL decelerating是否正在减速
BOOL zooming是否正在缩放
[_scrollView setMinimumZoomScale:0.2]; // 指定最小缩放比例
[_scrollView setMaximumZoomScale:2.0]; // 指定最大缩放比例
[_scrollView setDelegate:self]; // 设置滚动视图的代理
// 缩放中的代理方法
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"缩放中。。。");
}
// 缩放完成的代理方法
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{
NSLog(@"缩放完成 %f", scale);
}
// 一定要记住:本代理方法的返回值就是“要缩放的视图对象”
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return _imageView;
}
要实现分页效果,将滚动视图的pagingEnabled属性设置为YES即可。设置该属性后滚动视图会被分割成多个独立的页面,用户原本的滚动体验会变成了页面切换的效果
UIPageControl分页控制控件(页面下面的小点点)
UIPageControl属性:
NSInteger numberOfPages:总页数
NSInteger currentPage:当前的页码
BOOL hidesForSinglePage:当只有一页的时候,是否要隐藏视图
UIColor *currentPageIndicatorTintColor:当前选中页面标示的颜色
代码式例:
// 增加分页控件
UIPageControl *pageControl = [[UIPageControl alloc]init];
[pageControl setBounds:CGRectMake(0, 0, 150.0, 50.0)];
[pageControl setCenter:CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 100.0)];
[pageControl setNumberOfPages:2];
[pageControl setCurrentPage:0];
[pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]];
- (void)updatePageChanged:(UIPageControl *)pageControl{
CGFloat offsetX = pageControl.currentPage * _scroll.bounds.size.width;
[_scroll setContentOffset:CGPointMake(offsetX, 0) animated:YES];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSInteger pageNo = scrollView.contentOffset.x / scrollView.bounds.size.width;
//实现viewForZoomingInScrollView方法,返回要缩放的控件实现缩放,scrollview有多个图片时,只能缩放其中一个,返回那个图片就缩放那个图片
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return self.miniView;
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
//设置总页数
self.pageControl.numberOfPages = IMAGE_COUNT;
在使用UIScrollView和它的子类UITableView时,有时需要在不同操作状态下,做不同的响应。
如何截获这些状态,如正在滚动,滚动停止等,使用UIScrollViewDelegate_Protocol。
@interface SampleClass: UITableViewController<UIScrollViewDelegate> {
...
}
...
@end
@implement SampleClass
...
#pragma mark -
#pragma mark UIScrollViewDelegate
// 触摸屏幕来滚动画面还是其他的方法使得画面滚动,皆触发该函数
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"Scrolling...");
}
// 触摸屏幕并拖拽画面,再松开,最后停止时,触发该函数
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
NSLog(@"scrollViewDidEndDragging - End of Scrolling.");
}
// 滚动停止时,触发该函数
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"scrollViewDidEndDecelerating - End of Scrolling.");
}
// 调用以下函数,来自动滚动到想要的位置,此过程中设置有动画效果,停止时,触发该函数
// UIScrollView的setContentOffset:animated:
// UIScrollView的scrollRectToVisible:animated:
// UITableView的scrollToRowAtIndexPath:atScrollPosition:animated:
// UITableView的selectRowAtIndexPath:animated:scrollPosition:
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {NSLog(@"scrollViewDidEndScrollingAnimation - End of Scrolling.");
}
@end