UIScrollView已經(jīng)定義了捏合和移動(dòng)的手勢(shì),正常的操作來(lái)說(shuō),還會(huì)使用雙擊圖片進(jìn)行縮放,這需要我們自己收動(dòng)在UIScrollView加上點(diǎn)擊的手勢(shì)
1.添加手勢(shì)
let doubleTapGesture = UITapGestureRecognizer(target: self,action: #selector(FLCameraFilterTopView.handleDoubleTap(_:)))
doubleTapGesture.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(doubleTapGesture)
2.處理點(diǎn)擊手勢(shì)
func handleDoubleTap(tap:UITapGestureRecognizer) {
//獲取當(dāng)前縮放值
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 里設(shè)置
```
func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
//保證下一次的縮放在前次縮放的基礎(chǔ)上
scrollView.setZoomScale(scale, animated: true)
}
```