I want to zoom UIImageView
in ScrollView
but I do not know how to do this.
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView = UIScrollView()
var viewInScrollView: UIView = UIView()
var selectedImageView: UIImageView = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
view.addSubview(scrollView)
scrollView.addSubview(viewInScrollView)
viewInScrollView.addSubview(selectedImageView)
selectedImageView.image = UIImage(named: "michael")
scrollView.translatesAutoresizingMaskIntoConstraints = false
viewInScrollView.translatesAutoresizingMaskIntoConstraints = false
selectedImageView.translatesAutoresizingMaskIntoConstraints = false
scrollView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
viewInScrollView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
viewInScrollView.widthAnchor.constraint(equalToConstant: view.frame.width).isActive = true
viewInScrollView.heightAnchor.constraint(equalToConstant: view.frame.height).isActive = true
selectedImageView.anchor(top: viewInScrollView.topAnchor, leading: viewInScrollView.leadingAnchor, bottom: viewInScrollView.bottomAnchor, trailing: viewInScrollView.trailingAnchor)
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return selectedImageView
}
}
I suggest to start with a tutorial example for UIScrollView
zooming. Do it step by step first.
And ....
At a glance, your constraints for viewInScrollView
are not accurate. The views hierarchy in your project is
view -> scrollView -> viewInScrollView -> selectedImageView
The constraints for viewInScrollView
will decide the contentSize
of UIScrollView
. When zooming in/zooming out, the contentSize
will changed. So, it's (top, bottom, left, right) anchor should aligned to UIScrollView
, not to view
. So I think the following constraint is wrong.
// Not right
viewInScrollView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
// It should aligned to `UIScrollView`'s top, bottom, left and right anchors.
You have to add maximumZoomScale
, minimumZoomScale
to your scrollView
like following.
scrollView.minimumZoomScale = 0.25
scrollView.maximumZoomScale = 5.0
Hope this help!.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.