UIScrollView已經定義了捏合和移動的手勢,正常的操作來說,還會使用雙擊圖片進行縮放,這需要我們自己收動在UIScrollView加上點擊的手勢
1.添加手勢
let doubleTapGesture = UITapGestureRecognizer(target: self,action: #selector(FLCameraFilterTopView.handleDoubleTap(_:)))
doubleTapGesture.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(doubleTapGesture)
2.處理點擊手勢
func handleDoubleTap(tap:UITapGestureRecognizer) {
//獲取當前縮放值
var newScale = scrollView.zoomScale
if scrollView.zoomScale == 1 {
newScale = 0.8
}else {
newScale = 1
}
//獲取要縮放的大小和起始位置,這里都是居中
let zoomRect = self.zoomRectForScale(newScale, center: CGPointMake(FL.ScreenWidth/2,FL.ScreenWidth/2))
scrollView.zoomToRect(zoomRect, animated: true)
}
func zoomRectForScale(scale:CGFloat,center:CGPoint) -> CGRect {
var zoomRect = CGRectZero
zoomRect.size.height = scrollView.frame.size.height / scale
zoomRect.size.width = scrollView.frame.size.width / scale
zoomRect.origin.x = center.x - zoomRect.size.width/2.0
zoomRect.origin.y = center.y - zoomRect.size.height/2.0
return zoomRect
}
```
3. UIScrollViewDelegate 里設置
```
func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
//保證下一次的縮放在前次縮放的基礎上
scrollView.setZoomScale(scale, animated: true)
}
```