iOS 图片预览 放大缩小的实现方式

原理

UIImageView放到UIScrollView中 对UIImageView添加点击事件实现

具体代码

添加代理UIScrollViewDelegate

涉及的两个View

1
2
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var showImageView: UIImageView!

添加事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
func addEvent(){
self.scrollView.isMultipleTouchEnabled = true;
self.scrollView.maximumZoomScale = 5.0;
self.scrollView.minimumZoomScale = 1;
self.scrollView.delegate = self;

self.showImageView.isUserInteractionEnabled = true;

let tapImgOnce = UITapGestureRecognizer.init(target: self, action: #selector(tapImgViewHandle(image:)))
tapImgOnce.numberOfTapsRequired = 1;
tapImgOnce.numberOfTouchesRequired = 1;
self.showImageView.addGestureRecognizer(tapImgOnce)

let tapImgTwice = UITapGestureRecognizer.init(target: self, action: #selector(tapImgViewHandleTwice(image:)))
tapImgTwice.numberOfTapsRequired = 2;
tapImgTwice.numberOfTouchesRequired = 1;
self.showImageView.addGestureRecognizer(tapImgTwice)

tapImgOnce.require(toFail: tapImgTwice);
}
@objc func tapImgViewHandle(image:UIImageView){
self.dismiss(animated: false, completion: nil)
}

@objc func tapImgViewHandleTwice(image:UIImageView){
if(self.scrollView.zoomScale > 1){
self.scrollView.setZoomScale(1, animated: true)
}else{
self.scrollView.setZoomScale(3, animated: true)
}
}

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.showImageView;
}