Ich habe ein Scrollview programmgesteuert erstellt und ein Bild als Unteransicht hinzugefügt, aber wenn ich versuche, in das Bild zu zoomen, zoomt es nur in die obere Ecke und lässt mich nicht herumrollen Sehen Sie verschiedene Teile des Bildes.Scrollview zoomt nur zur oberen linken Ecke
Hier ist der Code, den ich verwendet, um die Scrollview zu erstellen:
let scrollView = UIScrollView()
var image: NSData!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 3.0
scrollView.zoomScale = 1.0
scrollView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
scrollView.delegate = self
scrollView.isPagingEnabled = false
scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
view.addSubview(scrollView)
scrollView.addSubview(imageView)
imageView.image = UIImage(data: image as Data)
imageView.contentMode = .scaleAspectFit
imageView.isUserInteractionEnabled = true
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(share))
longPress.minimumPressDuration = 0.5
longPress.numberOfTapsRequired = 0
imageView.addGestureRecognizer(longPress)
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap(recognizer:)))
doubleTap.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(doubleTap)
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
func share(sender: UILongPressGestureRecognizer) {
if sender.state == .ended {
if UIImage(data: image as Data) != nil {
let Item = UIImage(data: self.image! as Data)
let activity = UIActivityViewController(activityItems: [Item!], applicationActivities: nil)
activity.excludedActivityTypes = [UIActivityType.print, UIActivityType.addToReadingList, UIActivityType.openInIBooks]
self.present(activity, animated: true, completion: nil)
}
}
}
func handleDoubleTap(recognizer: UITapGestureRecognizer) {
if scrollView.zoomScale > scrollView.minimumZoomScale {
scrollView.setZoomScale(scrollView.minimumZoomScale, animated: true)
} else {
scrollView.setZoomScale(scrollView.maximumZoomScale, animated: true)
}
}
Vielen Dank für jede Art von Hilfe
wo ist imageview frame? – Daniel
AS pro Ihre Frage überprüfen Sie bitte meine Antwort in https://stackoverflow.com/questions/43624834/uiimageview-zoom-and-pinch-in-uiscrollview/43626273#43626273 –