一、UIScrollView
// 创建scrollview
UIScrollView *scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 600)];
scrollview.backgroundColor = [UIColor yellowColor];
scrollview.tag = 1000;
// 设置可以偏移的范围
scrollview.contentSize = CGSizeMake(scrollview.frame.size.width * 3, 0);
// 分页偏移(默认为NO)
scrollview.pagingEnabled = YES;
// 是否反弹
// scrollview.bounces = YES;
// 关闭水平滚动条
scrollview.showsHorizontalScrollIndicator = NO;
// 关闭回弹效果
scrollview.bounces = NO;
// 设置偏移量
// scrollview.contentOffset = CGPointMake(200, 0);
// 设置代理人
scrollview.delegate = self;
// 设置视图放大和缩小可允许的倍数
// scrollview.maximumZoomScale = 2;
// scrollview.minimumZoomScale = 0.5;
[self.view addSubview:scrollview];
// 使用循环向scrillview添加视图
for (int i = 1; i < 4; i++) {
UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, scrollview.frame.size.width, scrollview.frame.size.height)];
imageview.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.tiff", i]];
// 创建专门用于放大缩小的scrollView
UIScrollView *little = [[UIScrollView alloc] initWithFrame:CGRectMake(scrollview.frame.size.width * (i - 1), 0, scrollview.frame.size.width, scrollview.frame.size.height)];
// 设置放大缩小的倍数
little.maximumZoomScale = 2;
little.minimumZoomScale = 0.5;
// 设置代理人
little.delegate = self;
[little addSubview:imageview];
[scrollview addSubview:little];
}
二、 UIPageControl
UIPageControl *pageC = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 625, self.view.frame.size.width, 20)];
pageC.tag = 10001;
pageC.backgroundColor = [UIColor redColor];
// 设置点的数量
pageC.numberOfPages = 3;
[pageC addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:pageC];
三、事件
//获取缩放视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
- return [scrollView.subviews firstObject];
- }
#pragma mark - UIScrollViewDelegate
//滚动(产生偏移)就会触发
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog( @"%f", scrollView.contentOffset.x);
}
//将要开始拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
NSLog(@"拖拽");
}
//将要结束拖拽
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
NSLog(@"将要结束拖拽");
}
//scrollViewDidEndDecelerating - 已经结束减速
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
// 获取pageControl
UIPageControl *pageControl = [self.view viewWithTag:10001];
// 通过偏移量设置第几个点
pageControl.currentPage = scrollView.contentOffset.x / scrollView.frame.size.width;
// 从滚动的scrollView找到其他子视图
for (UIScrollView *little in scrollView.subviews) {
// 判断对象是否属于一个类型
if ([little isKindOfClass:[UIScrollView class]]) {
// 将视图比例还原
little.zoomScale = 1.0;
}
}
}
//scrollViewWillBeginDecelerating - 将要开始减速
#pragma mark - PageControl事件
- (void)pageControlAction:(UIPageControl *)pageC {
// 通过tag获取scrollView
UIScrollView *scrollview = [self.view viewWithTag:1000];
// 通过第几个点设置scrollview的偏移量
// scrollview.contentOffset = CGPointMake(scrollview.frame.size.width * pageC.currentPage, 0);
// 使用具动画的方式
[scrollview setContentOffset:CGPointMake(scrollview.frame.size.width * pageC.currentPage, 0) animated:YES];}