scrollView 滚动视图
滚动属性
设置中心点位置,
是否反弹,
整页滑动,
contentSize(设置是否能够滚动),
contentOddset(默认显示的区域 = CGPointMake(kWidth,0)是显示滚动视图原点坐标为一个宽度位置的图片),
设置能否滑动到顶部,
设置是否滚动,
设置是否显示水平或垂直方向滚动条
设置碰到水平或者垂直方向是否反弹(需保证bounces是yes并且竖直方向的contentSize.hight<scrollView的高度)
缩放属性
设置缩小的最小比例
设置放大的最大比例
设置代理
获取缩放状态(只读)是不是正在缩放
控制缩放的时候是否会反弹
缩放过程中执行的方法(先返回进行缩放的视图)
返回缩放的视图
缩小需要固定中心位置
放大需要补齐左上方空隙
滚动相关属性
//创建滚动视图
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, kWidth, kHeight/2)];
//设置中心点位置
scrollView.center = CGPointMake(kWidth/2, kHeight/2);
//设置背景色
scrollView.backgroundColor = [UIColor yellowColor];
//设置contentSize,contentSize决定了视图是否能够滚动
scrollView.contentSize = CGSizeMake(/*3*kWidth*/1000, 2000);//只要竖向滑动,横向给和屏幕一样大,只要横向滑动,竖向属性就和屏幕一样大
//设置是否反弹
scrollView.bounces = YES;
//设置contentOffset(设置默认显示的区域)
//设置contentOffset可以让图片一张一张的切换(设置为图片的宽度)
scrollView.contentOffset = CGPointMake(kWidth, 0);//默认显示x=kWidth,y=0的地方
//设置整页滑动(图片可以整页整页的切换)
scrollView.pagingEnabled = YES;
//滑动到顶部(点击上方状态框可以回到顶部)
scrollView.scrollsToTop = YES;
//是否能够滚动
scrollView.scrollEnabled = YES;
//是否显示水平方向滚动条(默认显示滚动条)
scrollView.showsHorizontalScrollIndicator = NO;
//是否显示竖直方向滚动条
scrollView.showsVerticalScrollIndicator = NO;
//控制垂直方向遇到边框是否反弹(类似刷新消息或者新闻)
//保证bounces是yes的并且竖直方向的contentSize.height < scrollView的高度(未设置竖向滑动的时候可以拉下来,然后弹回去)
scrollView.alwaysBounceVertical = YES;
//控制水平方向遇到边框是否反弹(bounces设置为YES,并且width < scrollView的高度)
scrollView.alwaysBounceHorizontal = YES;
//缩放相关属性
//缩小的最小比例
scrollView.minimumZoomScale = 0.5;
//放大的最大比例
scrollView.maximumZoomScale = 2;
//设置代理
scrollView.delegate = self;
//获取缩放状态(只读)是不是正在缩放
NSLog(@"%d",scrollView.zooming);
//控制缩放的时候是否会反弹
scrollView.bouncesZoom = NO;
pageControl
self.pageControl.center=CGPointMake(self.view.bounds.size.width/2,self.view.bounds.size.height-70);
self.pageControl.backgroundColor= [UIColorredColor];
//设置圆点个数
self.pageControl.numberOfPages= imagesArray.count;
//设置未选中的圆点颜色
self.pageControl.pageIndicatorTintColor= [UIColorgreenColor];
//设置选中的圆点颜色
self.pageControl.currentPageIndicatorTintColor= [UIColorblueColor];
//当只剩下一个圆点的时候,设置是否隐藏
self.pageControl.hidesForSinglePage=YES;
//设置默认选中的圆点
self.pageControl.currentPage=0;
//事件
#pragma mark ------------------pageControl Action---------------
-(void)changePage:(UIPageControl *)pageControl{
//根据pageControl的当前页来设定scrollView的偏移量
CGPoint point = CGPointMake(pageControl.currentPage * kWidth, 0);
//让scrollView根据pageControl的当前页来计算出来的偏移量进行偏移
self.scrollView.contentOffset = point;
// NSLog(@"%lu",pageControl.currentPage);
}
#pragma mark ------------------ScrollViewDelegate---------------
//结束减速时执行
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//获取偏移量
CGFloat x = self.scrollView.contentOffset.x;
//根据偏移量控制pageControl的当前页
self.pageControl.currentPage = x / kWidth;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@" 开始拖拽");
}
//触发时机:ScrollView 将要结束拖拽的时候触发
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
NSLog(@"拖拽结束");
}
//触发时机:ScrollView 已经结束拖拽的时候触发
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSLog(@"已经结束了");
//在此方法中能拿到contenOfSet的偏移量
}
//触发时机:将要减速的时候触发(此方法不一定触发,匀速不一定触发)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
NSLog(@"将要减速");
}
//触发时机:已经结束减速的时候触发(此方法不一定触发,上面的减速方法不触发,这个结束减速的方法就不会触发)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSLog(@"结束减速");
//一般在这个方法中获取scrollView的偏移量,或者设置scrollView的偏移量
}
//触发时机:scrollView结束减速并且必须有动画效果才会触发(必须要有动画效果)
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
NSLog(@"结束减速(有动画)");
}
//触发时机,返回缩放后的视图,但是只能返回scrollView(内容)上的子视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return [scrollView viewWithTag:101];
}
//触发时机:开始缩放的时候触发
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
NSLog(@"开始缩放");
}
//触发时机:结束缩放的时候触发
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
NSLog(@"结束缩放");
}
//触发时机:点击状态栏,调用该方法,该方法能实现的前提是scrollToTop的属性是YES
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
return YES;
}
//触发时机:scrollView 已经回到顶部了
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
使用scrollViewDidZoom: 实时修改自身视图的大小