UIScrollView是ios中常用的控件,这一篇主要记录一些使用和注意点
1. UIScrollView常用属性
-
CGPoint contentOffset
表示、设置ScrollView的滚动位置(即与的间距值) -
CGSize contentSize
用来表示UIScrollView内容的尺寸,滚动范围() -
UIEdgeInsets contentInset
这个属性能够在UIScrollView的四周增加额外的滚动区域,一般用来避免scrollView的内容被其它控件遮挡 -
BOOL bounces
设置scrollview是否需要弹簧效果 -
BOOL scrollEnable
设置scrollview是否能滚动 -
BOOL showsHorizontalScrollIndicator
是否显示水平滚动条 -
BOOL showsVerticalScrollIndicator
是否显示竖直滚动条
2.属性说明
借用MJ老师视频中的一张图说明下contentOffset、contentSize、contentInset这三个属性
属性说明
3.监听ScrollView的滚动
要监听scrollview的滚动必须遵守UIScrollViewDelegate协议,并且然控制器成为UIScrollView的代理,然后实现协议中的方法。
- 监听用户开始拖动
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
- 监听拖动到某个位置
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
- 监听用户结束拖动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
4.UIScrollView缩放
要实现缩放功能,也同样需要遵守UIScrollViewDelegate协议,让控制器成为代理,并且实现协议中的以下方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的viewForZoomingInScrollView:
方法,这个方法返回的控件就是需要进行缩放
的控件。(必须实现viewForZoomingInScrollView:
,否则无法缩放)
(1)设置UIScrollView的id<UISCrollViewDelegate> delegate代理对象
(2)设置minimumZoomScale
:缩小的最小比例
(3)设置maximumZoomScale
:放大的最大比例
(4) 让代理对象实现下面的方法,返回需要缩放的视图控件
跟缩放相关的其它方法
- 缩放完毕的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
- 正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
5.实现滚动和缩放的示例代码如下
#import "ViewController.h"
/**
* 使用scrollview的时候必须要实现UIScrollViewDelegate
*/
@interface SecondViewController ()<UIScrollViewDelegate>
@property (strong, nonatomic) IBOutlet UIScrollView *myScrollView;
@property (nonatomic,strong) UIImageView *imageView;
@end
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
//设置控制器为scrollView的代理
_myScrollView.delegate = self;
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"landing_background"]];
[_myScrollView addSubview:imageView];
self.imageView = imageView;
//********设置内容展示区域(必须要设置,否则无法拖动)
_myScrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
//设置scrollview背景色
_myScrollView.backgroundColor = [UIColor orangeColor];
//最大、最小缩放
_myScrollView.maximumZoomScale = 2.0;
_myScrollView.minimumZoomScale = 0.2;
//设置偏移量
_myScrollView.contentInset = UIEdgeInsetsMake(40, 40, 10, 10);
//设置scrollview移动到某个坐标(左上角为原点)
_myScrollView.contentOffset = CGPointMake(-100, -100);
}
#pragma mark - *****缩放需要实现下面的方法(不实现无法完成缩放)
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return _imageView;
}
#pragma mark - scrollView将要开始拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"scrollView将要开始拖拽");
}
#pragma mark - scrollView将要结束拖拽
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
NSLog(@"scrollView将要结束拖拽");
}
#pragma mark - scrollView正在拖拽
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"scrollView正在拖拽");
}
@end
网友评论