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 的使用 要注意代理的接受 指定代理人,另外对于滚动的方法 和 缩放的方法的使用 要选择合适的方法使用。避免混淆