UIScrollView

//UIScrollView 滚动视图

   //滚动原因:控件大小限制了可显示的范围,如果想要显示更多的内容,需要滚动

   //滚动的条件:内容大小 > frame.size

//内容大小

    self.sv.contentSize = CGSizeMake(VIEW_WIDTH*6, VIEW_HEIGHT);

//偏移量

   //只要视图滚动 偏移量就会变化

   //只要改变偏移量 视图就会滚动

   sv.contentOffset = CGPointMake(100, 100);

//内边距

   sv.contentInset = UIEdgeInsetsMake(100, 200, 300, 400);

   /*  整页翻动  */

   //以当前滚动视图的宽度为1页

   self.sv.pagingEnabled = YES;

   /*  边缘弹动效果  */

   self.sv.bounces = YES;

   /*  滚到顶部 */

   //每个滚动视图默认都为YES 一个页面中存在多个滚动视图时 仅开启需要滚动的视图 其他滚动视图置为NO

   self.sv.scrollsToTop = NO;

   /* 是否允许滚动 */

   self.sv.scrollEnabled = YES;

   /* 滚动条显示/隐藏  */

   //水平Horizontal

   self.sv.showsHorizontalScrollIndicator = NO;

   //垂直Vertical

   self.sv.showsVerticalScrollIndicator = NO;

//UIPageControl

   //视图的滚动分为两个阶段:

   //1.拖拽(手指在屏幕上)

   //2.减速(手指离开屏幕)

   self.sv.delegate = self;

   //滚动视图功能为:滚动/缩放

   //最小比例

   self.sv.minimumZoomScale = 0.5;

   //最大比例

   self.sv.maximumZoomScale = 2;

#parma --- scrollView的代理方法

       // scrollView正在滚动的时候调用 偏移量一直变化

        - (void)scrollViewDidScroll:(UIScrollView *)scrollView;

       // scrollView正在缩放

        - (void)scrollViewDidZoom:(UIScrollView *)scrollView

        //开始拖拽的时候调用

        - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

        //即将停止拖拽的时候调用

        - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inoutCGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);

       // 已经停止拖拽调用

        - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

        //scrollView即将开始减速

        - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;

       // scrollView停止减速 停止

        - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

        //scrollView停止滚的的动画

        - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;

        //在scrollView中 哪些控件是需要缩放的

        - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;

        //scrollView即将开始缩放

        - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);

        //scrollView结束缩放

        - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;

        //scrollView即将滚动到顶部

        - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;

        //scrollView已经滚动到顶部

        - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;

通过UIScrollView实现缩放效果

//准备开始缩放的时候调用 

- (void)scrollViewWillBeginZooming:(UIScrollView*)scrollView withView:(UIView*)view

//正在缩放的时候调用

- (void)scrollViewDidZoom:(UIScrollView*)scrollView

核心代码:设置内容大小

    contentSize.height == 0设置为0仅仅代表竖直方向上不能滚动

   self.scrollView.contentSize=CGSizeMake(count * w, 0);

   分页

    每一页的尺寸都是跟scrollView的frame.size一样的

   self.scrollView.pagingEnabled=YES; 

- (void)scrollViewDidScroll:(UIScrollView*)scrollView{

    --四舍五入为整数的方法--  (int)(小数+ 0.5)

    0.3  -> (int)(0.3 + 0.5) == 0

    0.4 -> (int)(0.4 + 0.5) == 0

    1.5 -> (int)(1.5 + 0.5) == 2

    0.7 -> (int)(0.7 + 0.5) == 1

    小数加上0.5再转换成整数,这样页码显示的就是正确的页数(仔细想)

   intpage = (int)(scrollView.contentOffset.x/ scrollView.frame.size.width+ 0.5);

   self.pageControl.currentPage= page;

}

- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView{

   intpage = scrollView.contentOffset.x/ scrollView.frame.size.width;

   self.pageControl.currentPage= page;

}

分页

只要将UIScollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示,一般会配合UIPageControl增强分页效果

//一共有多少页

@property(nonatomic)NSIntegernumberOfPages;

当前显示第几页

@property(nonatomic)NSIntegercurrentPage; 

//只有一页时,是否需要隐藏页码指示器

@property(nonatomic)BOOLhidesForSinglePage; 

//其他页码指示器的颜色

@property(nonatomic,retain)UIColor*pageIndicatorTintColor;

//当前页码指示器的颜色

@property(nonatomic,retain)UIColor*currentPageIndicatorTintColor;

你可能感兴趣的:(UIScrollView)