// 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 {
// 去改动scrollView的contentOffset
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