首页 > 代码库 > 开发进阶10_UIScrollView
开发进阶10_UIScrollView
//创建UIScrollView
UIScrollView *scroll = [[UIScrollView alloc] init];
//值UIScrollView的可视范围
scroll.frame = CGRectMake(0, 0, 375, 667);
scroll.backgroundColor = [UIColor grayColor];
[self.view addSubview:scroll];
//创建图片
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = [UIImage imageNamed:@"big.jpg"];
//图片的宽
CGFloat imgW = imageView.image.size.width;
//图片的长
CGFloat imgH = imageView.image.size.height;
imageView.frame = CGRectMake(0, 0, imgW, imgH);
[scroll addSubview:imageView];
//设置UIScrollView的滚动范围(内容大小)
scroll.contentSize = imageView.image.size;
//设置水平滚动条是否可见
scroll.showsHorizontalScrollIndicator = NO;
//设置垂直滚动条是否可见
scroll.showsVerticalScrollIndicator = NO;
//去掉弹簧效果
scroll.bounces = NO;
//增加额外的滚动区域
//后面参数的顺序是按照逆时针(top、left、bottom、right)
scroll.contentInset = UIEdgeInsetsMake(10, 20, 30, 40);
//获取可视区域在可滚动范围中的坐标(以可滚动范围的左上角为原点,不收contentInset限制,contentInset添加的滚动区域不算在内(也就是说contentOffSet的坐标原点一直是contentSize的范围的左上角))
scroll.contentOffset = CGPointMake(0, 0);
scroll.scrollEnabled = YES;
//设定滚动条的样式(枚举类型,有三种样式,默认,黑,白)
scroll.indicatorStyle = UIScrollViewIndicatorStyleDefault;
BOOL bounces 是否有弹簧效果
BOOL scrollEnabled 是否能滚动
BOOL showsHorizontalScrollIndicator 是否显示水平方向的滚动条
BOOL showsVerticalScrollIndicator 是否显示垂直方向的滚动条
UIScrollViewIndicatorStyle indicatorStyle 设定滚动条的样式
BOOL dragging 是否正在被拖拽
BOOL tracking 当touch后还没有拖动的时候值是YES,否则NO
BOOL decelerating 是否正在减速
BOOL zooming 是否正在缩放
/*
图片的手势缩放
-》设置UIScrollView的id<UIScrollViewDelegate>delegate代理对象
-》设置minimumZoomScale:缩小的最小比例
-》设置maxmunZoomScale:放大的最大比例
-》让代理对象实现下面的方法,返回需要缩放的视图控件
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
当用户尝试缩放UIScrollView的时候,scrollView会尝试向他的delegate(代理对象)发送一条消息,询问要缩放那个子控件。换种说法,就是:scrollView会尝试调用delegate的某个方法,询问要缩放哪一个子控件,并且该方法的返回值就是需要缩放的子控件
总结:
-》设置delegate对象
-》scrollView必须知道delegate是通过那个方法返回需要缩放的子控件
scrollView要跟delegate对象协商好:用哪一个方法返回需要缩放的子控件- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
步骤:
-》设置ScrollView的delegate为控制器(self)
-》控制器遵守UIScrollViewDelegate协议<UIScrollViewDelegate>
-》控制器实现- (UIView *)viewForZoomingInScrollView: 方法,返回需要缩放的子控件
-》设置最大和最小缩放比例
*/
//遵守协议
@interface ViewController () <UIScrollViewDelegate >
{
UIImageView *_imageView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.添加UIScrollView
UIScrollView *scrollView = [[UIScrollView alloc] init];
scrollView.frame = self.view.bounds;
[self.view addSubview:scrollView];
//2.添加图片
UIImage *image = [UIImage imageNamed:@"big.jpg"];
//调用initWithImage:方法创建出来的UIImageView,他的宽高默认跟图片的宽高一样
_imageView = [[UIImageView alloc] initWithImage:image];
[scrollView addSubview:_imageView];
scrollView.contentSize = image.size;
//设置代理
scrollView.delegate = self;
//缩放范围
scrollView.maximumZoomScale = 2.0;
scrollView.minimumZoomScale = 0.2;
}
#pragma mark - 这个方法返回的控件就能进行捏合手势缩放操作
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return _imageView;
}
#pragma mark - 当缩放完毕的时候调用
//scale:当前缩放比例
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
}
#pragma mark - 当前正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
@end
开发进阶10_UIScrollView