直接在 UIImageView 上添加 UIPinchGestureRecognizer 並修改 transform,縮放效果不理想且無法雙擊復位。
UIScrollView 內建縮放、雙擊縮放、邊界彈回等完整交互,只需實現代理方法返回縮放視圖:
// 佈局:ScrollView > ImageView
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 3.0
scrollView.contentSize = imageView.bounds.size
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
需手動管理 transform 累積狀態(sender.scale = 1 重置)、邊界限制、動畫復位,工作量大且易出錯,不推薦。