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

原文地址:https://www.cnblogs.com/fengwuqingyang/p/4929821.html