iOS 使用UIScrollView實現圖片的縮放
當需要在特定的區域實現圖片的手勢縮放時,我們首先想到的就是UIScrollview。
縮放原理:當用戶在UIScrollView身上使用捏合手勢時,UIScrollView會給代理髮送一條消息,詢問代理究竟要縮放自己內部的哪一個子控件(哪一塊內容),同時會回調UIScrollView的Delegate方法:
- viewForZoomingInScrollView:(OC)方法
- viewForZooming(Swift)方法
這個方法返回的控件就是需要進行縮放的控件。
實現代碼
let imageWidth = LayoutPublic.ScreenMainSize.mainWidth-30
let imageHeight = LayoutPublic.ScreenMainSize.mainHeight
let bgScrollView:UIScrollView = UIScrollView.init(frame: .init(x: 15, y: 15, width: imageWidth, height: imageHeight*0.6))
bgScrollView.delegate = self
bgScrollView.maximumZoomScale = 2.0
bgScrollView.minimumZoomScale = 1.0
bgScrollView.layer.borderWidth = 5.0;
bgScrollView.layer.borderColor = UIColor.red.cgColor
self.addSubview(bgScrollView)
let imageFactWidth = imageWidth-20 //左右留白
let imageFactHeight = imageHeight*0.3-10 //上下留白
imageBgView = UIView.init(frame: .init(x: 10, y: 10, width: imageFactWidth, height: imageHeight*0.6-20))
bgScrollView.addSubview(imageBgView)
代理方法(記得引入代理方法):
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageBgView
}
實現效果: