UIScrollView

1 UIScrollView 的使用

1.1 UIScrollView的使用需要设置 滚动的范围、偏移量两个属性

contentSize  、contentOffset

1.2 接受代理和 指定代理

UIScrollViewDelegate

滚动过程的方法

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

//获取滚动视图的偏移量  

    CGPoint offset = scrollView.contentOffset;

    //如果在最后一张,此时往左滑动,跳动到第一张要执行的代码

    if (offset.x + KWidth > scrollView.contentSize.width) {

        [scrollView setContentOffset:CGPointMake(0, 0) animated:NO];

    }

    if (offset.x < 0) {

        [scrollView setContentOffset:CGPointMake(10 * KWidth, 0) animated:NO];

    }

}//实现了连续循环滚动的效果

滚动结束的方法

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

//和UIPageControl的结合使用

//获取滚动视图当前的偏移量

    CGPoint offset = scrollView.contentOffset;

    //计算偏移量与屏幕宽度的关系。也就是便宜了多少倍

    NSInteger page = offset.x / KWidth;

    self.pageControl.currentPage = page - 1 < 0  ?  9 : page - 1;

}

1.3 换可以设置便捷回弹效果 滚动的滑块 整业翻等

_scrollView.bounces = YES;//偏移回弹打开

_scrollView.showsHorizontalScrollIndicator = NO;

_ scrollView.pagingEnabled = YES;

1.4 可以设置滚动视图的缩放效果(实现缩放效果需要把图片添加到滚动视图上面,再把滚动视图添加到大的滚动视图上面)两个滚动视图控制器都需要设置代理

首先需要设置缩放的比例

_scroll.minimumZoomScale = 0.5;

_scroll.maximumZoomScale = 2.0;

需要接收代理

_scroll.delegate = self;

1.5 缩放代理的实现必须要指定缩放的视图

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

    return [scrollView.subviews firstObject];//找到的是 imageView

}

//1 滚动过程中触发的方法

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

    NSLog(@"正在滚动");

//2 即将开始拖动,此时滚动视图即将加速

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

    NSLog(@"即将开始拖拽");

//3 拖动结束,即将进入减速

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

    NSLog(@"拖拽结束");

//4 减速开始

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

    NSLog(@"即将开始减速");

//5 减速结束

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

    NSLog(@"减速停止");    

    for (UIScrollView *sView in scrollView.subviews) {  //从滚动视图中找到 小的滚动视图 并把它的比例设置为初始值

        if ([sView isKindOfClass:[UIScrollView class]]) {

            sView.zoomScale = 1.0;

         }

     }

//正在缩放

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

    UIImageView *imageView = [scrollView.subviews firstObject];//找到scrollView 的imageView 的视图。

    if (scrollView.zoomScale <= 1.0) {  //判断条件是<= 确保在缩小 和 恢复为初始比例1.0 是都是在屏幕的中心位置缩放变化的

        imageView.center = CGPointMake(KWidth / 2, KHeight / 2);//实现的效果是以中心位置进行缩放

    }

//缩放结束执行的方法

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

    NSLog(@"%@",NSStringFromCGSize(scrollView.contentSize));

}

//scrollView 的使用 要注意代理的接受 指定代理人,另外对于滚动的方法 和 缩放的方法的使用  要选择合适的方法使用。避免混淆

原文地址:https://www.cnblogs.com/jiurong001/p/5186482.html