##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);
}