##DAY6 UIScrollView

##DAY6 UIScrollView

#pragma mark ———————UIScrollView———————————

属性:

contentSize 内容滚动范围

contentOffset 滚动视图的偏移量,如果不设置,默认开始是偏移(0,0)

contentInset 设置保留区域,在动态效果结束后,会在开头或结尾保留以下设置的值,UIEdgeInsetsMake(60, 0, 80, 0)

bounces 关闭滚动视图的回弹效果,默认开启

pagingEnabled 设置整页滚动,分页属性,是按照UIScrollView的frame的宽度分页的。

scrollEnabled 设置是否能滚动,默认YES

showsHorizontalScrollIndicator 关闭横向显示条

showsVerticalScrollIndicator 关闭竖向滚动条

tag tag值

delegate 设置滚动视图的代理

/*

 如果想实现滚动视图的缩放功能,必须指定缩放的视图以及缩放的比例

 指定缩放视图需要实现的代理方法,指定缩放比例,是为滚动设置缩放比例

 */

minimumZoomScale 最小缩放比例

maximumZoomScale 最大缩放比例

zoomScale 当前比例

代理中监控滚动的方法:

//滚动过程中触发的方法

scrollViewDidScroll:

//即将开始进行拖拽,此时的滚动视图即将加速

scrollViewWillBeginDragging:

//结束拖拽的方法,不再进行加速

scrollViewDidEndDragging:willDecelerate:

//即将开始减速

scrollViewWillBeginDecelerating:

//结束减速,停止滚动

scrollViewDidEndDecelerating:

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

    NSLog(@"结束减速");

    // 先从负责滚动的⼤scrollView找到他的⼦视图

    for (UIScrollView *sView in scrollView.subviews){

        // 在根据⼦类的对象类型进⾏判断

        if ([sView isKindOfClass:[UIScrollView class]]){

            // 把视图的尺⼨恢复到原有尺⼨

            sView.zoomScale = 1.0;

        }

    }

}

代理中监控视图缩放的方法:

//指定缩放视图

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

    return [scrollView.subviews firstObject];

    //scrollView上还有两个子视图,横向指示器和纵向指示器

}

//结束缩放

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{

    NSLog(@"%@",NSStringFromCGSize(scrollView.contentSize));

}

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

    UIImageView *imageView = [scrollView.subviews firstObject];

    if (scrollView.zoomBouncing <= 1.0) {

        imageView.center = CGPointMake(kWidth / 2, kHeight / 2);

    }

}

#pragma mark -----pageControl与scrollView关联的方法,两个都要写----------

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

//在滚动视图停止滚动时,改变pageControl上面点的位置

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

    //获取滚动视图当前偏移量

    CGPoint offset = scrollView.contentOffset;

    //计算偏移量与屏幕宽度的关系,也就是偏移了多少倍

    NSInteger page = offset.x / kWidth;

    //赋值

    self.pageControl.currentPage = page - 1 < 0 ? 9 : page - 1;

}

#pragma mark -----pageControl的触发事件的方法----------

- (void)click:(UIPageControl *)page{

    self.scrollView.contentOffset = CGPointMake(kWidth * (page.currentPage + 1), 0);

}

原文地址:https://www.cnblogs.com/chongyu/p/5192431.html