• ScrollView学习01


     // scrollView是一个滚动视图, 主要用于显示一些比较大的图片, 可以显示很多的内容

        UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 20, 280, 280)];

        scrollView.backgroundColor = [UIColor orangeColor];

        scrollView.tag = 876;

        

        // 把图片放到scrollView

        UIImage *image = [UIImage imageNamed:@"1001.jpg"];

        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height);

        imageView.tag = 9877;

        

        // scrollView需要设置两个大小

        // 1. scrollView本身的大小, frame.size

        // 2. scrollView显示内容的大小 contentSize

        scrollView.contentSize = image.size;

        

        // 只有当显示内容的大小比scrollView本身的大小(frame.size) 大的N时候, 默认才可以滚动

    //contentSize是设置scrollView可以滚动的区域   contentofSize

        scrollView.contentSize = CGSizeMake(image.size.width, 0);

        

        // 垂直方向永远可以越界回弹

        scrollView.alwaysBounceVertical = YES;

        scrollView.alwaysBounceHorizontal = YES;

        

        // 设置scrollView能否滚动

    //    scrollView.scrollEnabled = NO;

        

        // 取消越界效果

        scrollView.bounces = YES;

        

        // 设置是否可以点击状态栏, 返回顶部

        scrollView.scrollsToTop = YES;

        

        // ΔΔΔ 这个是一个重点的属性, 控制scrollView显示内容的位置

        // 是一个点, 这个点用来表示scrollView本身的左上角, 相对于显示内容的坐标(位移)

        scrollView.contentOffset = CGPointMake(2000, 2000);

        

        // 遵循代理

        /**

         开始拖动

         滚动

         松手

         开始减速

         滚动

         停下来

         */

        scrollView.delegate = self;

        

        // 设置缩放的比例

        scrollView.minimumZoomScale = 0.1;

        scrollView.maximumZoomScale = 2;

        // 缩放的回弹效果

        scrollView.bouncesZoom = NO;

        

        // 设置翻页滚动(以什么分页的呢? scrollView的大小做分页的)

    //    scrollView.pagingEnabled = YES;

        

        // 滑动指示器(scrollView是否显示水平 / 垂直方向的滑动指示器)

        scrollView.showsHorizontalScrollIndicator = NO;

        scrollView.showsVerticalScrollIndicator = NO;

        

        

        

        [scrollView addSubview:imageView];

        

        

        [self.view addSubview:scrollView];

    }

     

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

        // 去改动scrollViewcontentOffset

        UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:876];

        NSLog(@"wawaw");

        // 改变scrollView的内容显示的位置

    //    scrollView.contentOffset = CGPointMake(2000, 1500);

        [scrollView setContentOffset:CGPointMake(2000, 1500) animated:YES];

    }

     

     

    #pragma mark ---------------- scrollView的协议方法 ---------

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

        // 返回的是需要缩放的视图

        UIView *view = [scrollView viewWithTag:9877];

        return view;

    }

     

    // 即将开始拖动视图

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

        NSLog(@"%s", __func__);

    }

     

    // 滚动(会一直调用)

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

        NSLog(@"%s", __func__);

    }

     

    // 松手, 停止拖动(1.会减速 YES,  2.不会减速 NO)

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

        // decelerate这个参数表示拖动完成后, scrollView是否会减速, 继续滚动

        NSLog(@"%s", __func__);

    }

     

    // 即将开始减速

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

        NSLog(@"%s", __func__);

    }

     

     

    // 停止减速

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

        NSLog(@"%s", __func__);

    }

     

    // 能都通过点击状态栏返回到顶部

    // 当点击状态栏的时候, 会经过两步的判断

    // 1. scrollToTop属性是否打开, 如果没有打开, 就直接不能返回到顶部

    // 2. 如果scrollToTop属性是打开的, 来判断这个协议方法的返回值

    // 这个协议方法一般用来 当一个界面有多个scrollView的时候, 来区分哪些scrollView可以返回到顶部, 分开处理

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

        return NO;

    }

     

     

    @end

  • 相关阅读:
    SRM 441(1-250pt, 1-500pt)
    SRM 387(1-250pt)
    SRM 388(1-250pt)
    SRM 389(1-250pt)
    SRM 601(1-250pt,500pt)
    SRM 409(1-250pt, 1-500pt)
    SRM 408(1-250pt, 1-500pt)
    unique() 去重函数
    poj3468(A Simple Problem with Integers)
    HDU1394(Minimum Inversion Number)
  • 原文地址:https://www.cnblogs.com/fengwuqingyang/p/4929821.html
Copyright © 2020-2023  润新知