UIScrollView滚动视图:3-视图的缩放功能
UIScrollView中与控件缩放相关的方法与属性
UIScrollView提供了对子控件(如图片)的放大和缩小功能,该项功能需要通过UIScrollView的代理方法来实现。需要注意的是缩放功能会修改UIScrollView的contentSize值。
- UIScrollView中定义的与图片放大缩小相关的属性:
@property(nonatomic) CGFloat minimumZoomScale; // 最小放大比例,取值范围0.0~1.0,默认1.0
@property(nonatomic) CGFloat maximumZoomScale; //最大放大比例,默认1.0
- UIScrollViewDelegate中定义的与图片放大缩小相关的代理方法:
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; //返回需要放大的控件,必须实现该方法
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view ; // 即将开始缩放时调用
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; //结束缩放时调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView; //缩放过程中不断调用该方法
示例代码
下方的示例代码实现了对滚动视图中的一个UIImageView对象实现缩放的操作。
创建一个Single View Application工程,并导入一张名为image的图片,图片的大小尽量大一些
设置ViewController类遵守UIScrollViewDelegate协议
@interface ViewController () <UIScrollViewDelegate>
- 添加一个用于缩放的UIImageView图片属性,并且对其进行懒加载设置属性
@interface ViewController ()<UIScrollViewDelegate>
@property (nonatomic,strong) UIImageView * imageView;
@end
-(UIImageView *)imageView{
if (_imageView == nil) {
_imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image"]];
}
return _imageView;
}
- 在ViewDidLoad中添加如下代码,设置UIScrollView的属性并且指定其缩放的比例
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个与屏幕等宽等高的滚动视图
UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
//设置滚动区域的大小
myScrollView.contentSize = self.imageView.bounds.size;
//指定其代理对象
myScrollView.delegate = self;
//设置最小和最大缩放倍数
myScrollView.minimumZoomScale = 0.3;
myScrollView.maximumZoomScale = 3;
//添加子视图
[myScrollView addSubview:self.imageView];
[self.view addSubview:myScrollView];
}
- 实现viewForZoomingInScrollView:方法,返回需要被缩放的图片对象
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView;
}
- 监控用户缩放的行为动作
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view{
NSLog(@"图片即将开始被缩放。");
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale{
NSLog(@"图片缩放完成。");
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"图片缩放过程中。");
}
运行结果如下。
示例代码
https://github.com/99ios/8.1.3
文章发布时间为: October 13th , 2016 at 10:18 pm
最后编辑时间为: September 13th , 2017 at 02:08 pm
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 13th , 2017 at 02:08 pm
本文由 99ios 创作,转载请注明出处