1.什么是UIScrollView?
简单来说UIScrollView就是一个可以用来实现滚动和缩放的UI控件。UIScrollView类为显示大于应用窗口的内容提供支持。通过它,用户可以使用滑动手势来滚动,并可以使用扩张/收缩手势来放大缩小部分内容。
2.常用属性:
1) contentSize:
内容视图的大小,单位是点。默认值是CGSizeZero.要比scrollView的size大。
2) contentInset:
表示内容视图从封闭滚动视图中被嵌入的距离。该属性增加围绕内容的滚动区域。单位为点。
3) contentOffset:
表示从滚动视图的原点到内容视图的原点的偏移的距离。
4) bounces:
控制滚动视图是否具有弹簧效果。若该值为YES,表示滚动视图具备弹簧效果;若值为NO,滚动视图会在到达边缘时立即停止。默认值为YES。一般不会关闭这个效果。
5) alwaysBounceVertical:
布尔值,规定滚动视图是在垂直方向上否总是具有弹簧效果(即使不设置contentSize也可以有弹簧效果)。前提是bounces = YES;
6) alwaysBouncesHorizontal:
布尔值,规定滚动视图是在水平方向上否总是具有弹簧效果(即使不设置contentSize也可以有弹簧效果)。前提是bounces = YES;
7) scrollEnabled:
布尔值。设置是否可以滚动。若该值为YES,则允许滚动;若该值为NO,则禁止滚动。默认值为YES;当滚动被禁止时,滚动视图将不再接受触摸事件,滚动视图会将事件传送至响应链中。
8) showsHorizontalScrollIndicator:
布尔值。控制水平滚动指示器是否可见。默认值为YES。指示器会在跟踪时显示并在跟踪之后消失。
9) showsVerticalScrollIndicator:
控制垂直滚动指示器是否可见。默认值为YES。指示器会在跟踪时显示并在跟踪之后消失。
10) zoomScale:
指定当前应用于滚动视图的内容的缩放因子。可以通过minimumZoomScale设置最小的缩小倍数;maxmumZoomScale设置最大的放大倍数。
3.用法:
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/**
scrollView中的内容滚动就必须要设置: 滚动范围
contentSize: 子控件的大小,限定滚动的范围
contentSize在设置的时候一定要比scrollView的size要大
如果size中的宽度设为0,就表示横向中不能滚动
*/
_scrollView.contentSize = self.imageView.frame.size;//(第四步时关闭)
/**
2.
隐藏滚动条
Horizontal: 水平
Vertical: 垂直
*/
_scrollView.showsHorizontalScrollIndicator = NO;
_scrollView.showsVerticalScrollIndicator = NO;
/**
3.
bounces: 弹簧效果
一般不关闭
*/
_scrollView.bounces = YES;
/**
不设置contentSize的时候,弹簧效果开启,依然看不到
*/
/**
4.
下面的方法可以在不设置contentSize清空下,在水平和垂直方向上依然有弹簧效果
前提是:scrollView.bounces = YES;
alwaysBounceHorizontal
alwaysBounceVertical
*/
_scrollView.alwaysBounceHorizontal = YES;
_scrollView.alwaysBounceVertical = YES;
/**
5.
contentInset: 内边距
没有设置contentInset的时候,拖动后imageView默认会停留在初始位置
contentInset: 拖动后,会停留在设置 的内边距位置
UIEdgeInsetsMake:结构体 对应的是
top, left, bottom, right
*/
_scrollView.contentInset = UIEdgeInsetsMake(10, 20, 30, 40);
/**
6.
contentOffset: offset偏移量 ,滚动到了某个位置
*/
_scrollView.contentOffset = CGPointMake(100, 0);
/**
7.scrollView 不能滚动的原因
1.contentSize 比 scrollView的size小
2.关闭用户交互: _scrollView.userInteractionEnabled = NO;
3. _scrollView.scrollEnabled = NO;
*/
_scrollView.scrollEnabled = YES;
}
@end