ScrollView
首先,为什么要使用ScrollView?
说白了,就是由于显示的内容太大,移动设备屏幕太小,让用户拖动或缩放来查看内容。
接下来,介绍主要的一些属性。
contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。
contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentOffset就是(0 ,480),也就是y偏移了480 。
contentInset是scrollview的contentView的顶点相对于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentView就是从scrollview的(0 ,100)开始显示 。
CGPoint upperLeftOfVisible = scrollView.contentOffset;//当前显示区域的原点位置
scrollView.bounds,当前显示的区域。
CGRect visibleRect = [scrollView convertRect:scrollView.bounds toView:subview];//滚动视图当前显示的区域的子视图
//注意,这个子视图可能是被缩放过的。
1.建立UIScrollView
拖动建立或者选择一个UIView然后选择“Editor -> Embed In -> Scroll View”
或者[scrollView addSubview:subview]; //subview是任意的大的UIView
所有的子视图都会使用滚动视图的坐标系。
scrollView.contentSize=CGSizeMake(320,758);
scrollView.contentInset=UIEdgeInsetsMake(64.0,0.0,44.0,0.0);
千万不要忘记设置滚动视图的contentsize!
或者在程序中建立:
CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame];
scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect];
scrollView.contentSize=CGSizeMake(320,758);
2.滚动视图的一些控制选项
滚动是否被启用。
锁定滚动方向为用户首次滚动的方向。
显示水平竖直滚动条。
3.缩放
缩放会影响滚动视图的contentSize和contentOffset,必须设置缩放比例,否则不能工作。
scrollView.minimumZoomScale = 0.5; // 一半的大小
scrollView.maximumZoomScale = 2.0; // 2倍的大小
对于指定的需要缩放的视图,必须设置代理方法。
比如,对scrollView中的一个图片缩放的代码
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView.minimumZoomScale=0.5;
self.scrollView.maximumZoomScale=6.0;
self.scrollView.contentSize=CGSizeMake(1280, 960);
self.scrollView.delegate=self;
}
其他的可以再程序中控制的一些缩放属性和方法
@property (nonatomic) float zoomScale;
- (void)setZoomScale:(float)scale animated:(BOOL)animated;
- (void)zoomToRect:(CGRect)zoomRect animated:(BOOL)animated;
4.滚动视图的代理方法(UIScrollViewDelegate)
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView //滚动结束会通知你
- (void)scrollViewDidEndZooming:scrollView withView:(UIView *)view atScale:(CGFloat)scale
注意,如果在新的缩放下重画视图,确保重设它的transform。