IOS开发之——内容的放大与缩小(12)

一 概述

  • 有些时候,我们需要对某些内容进行手势缩放,而UIScrollView能满足这个要求;
  • UIScrollVIew不仅能滚动显示大量内容,还能对其内容进行缩放处理
  • 也就是说,要完成缩放功能,只需要将需要缩放的内容添加到UIScrollView中

二 UIScrollVIew的缩放原理

  • 当用户在UIScrollVIew身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个控件(哪一块内容)
  • 当用户在UIScrollView身上使用捏合手势时,UIScrollVIew会调用代理的ViewForZoomingInScrollView方法,这个方法返回的控件就是需要缩放的控件

三 缩放的实现步骤

  1. 1.设置UIScrollView的id delegate代理对象

  2. 设置minmumZoomScale:缩小的最小比例

  3. 设置maximumZoomScale:放大的最大比例

  4. 让代理对象实现下面的方法,返回需要缩放的视图控件

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
    

四 代码实现

4.1 OC模式下(ViewController.m)

#import "ViewController.h"

@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.scrollView.contentSize=self.imageView.image.size;
    self.scrollView.delegate=self;
    self.scrollView.maximumZoomScale=2.0;
    self.scrollView.minimumZoomScale=0.2;
}
#pragma UIScrollView的代理

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return self.imageView;
}
//开始缩放
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"%s",__func__);
}
//完成缩放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
    NSLog(@"%s",__func__);
}
//正在缩放
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    NSLog(@"%@",NSStringFromCGAffineTransform(self.imageView.transform));
}
@end

4.2 Swift模式下(ViewController.swift)

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {
    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        self.scrollView.contentSize=self.imageView.image?.size as! CGSize;
        self.scrollView.delegate=self;
        self.scrollView.maximumZoomScale=2.0
        self.scrollView.minimumZoomScale=0.2
    }

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return self.imageView
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值