Eine andere einfache Möglichkeit, dies zu tun, besteht darin, Ihre UIImageView
innerhalb eines zu platzieren UIScrollView
. Wie hier beschrieben , müssen Sie die Inhaltsgröße der Bildlaufansicht so einstellen, dass sie Ihrer UIImageView's
Größe entspricht. Stellen Sie Ihre Controller-Instanz als Delegaten der Bildlaufansicht ein und implementieren Sie die Methoden viewForZoomingInScrollView:
und scrollViewDidEndZooming:withView:atScale:
, um das Zoomen und Schwenken von Bildern zu ermöglichen. Dies ist effektiv die Lösung von Ben, nur auf eine etwas leichtere Art und Weise, da Sie nicht den Overhead einer vollständigen Webansicht haben.
Ein Problem, auf das Sie möglicherweise stoßen, besteht darin, dass die Skalierung in der Bildlaufansicht in Form von Transformationen erfolgt, die auf das Bild angewendet werden. Dies kann bei hohen Zoomfaktoren zu Unschärfe führen. Für etwas, das neu gezeichnet werden kann, können Sie meinen Vorschlägen hier folgen , um nach Abschluss der Kneifgeste eine schärfere Anzeige zu erhalten. Zu diesem Zeitpunkt kann die Lösung von hniels verwendet werden, um Ihr Bild neu zu skalieren.
Wie bereits beschrieben, besteht die einfachste Lösung darin, Ihre UIImageView in eine UIScrollView zu integrieren. Ich habe dies in der .xib-Datei des Interface Builder getan.
Legen Sie in viewDidLoad die folgenden Variablen fest. Stellen Sie Ihren Controller als UIScrollViewDelegate ein.
Sie müssen die folgende Methode implementieren, um die Bildansicht zurückzugeben, die Sie zoomen möchten.
In Versionen vor iOS9 müssen Sie möglicherweise auch diese leere Delegatenmethode hinzufügen:
In der Apple-Dokumentation wird gut beschrieben, wie das geht:
quelle
scrollViewDidEndZooming :
.Shefalis Lösung für UIImageView funktioniert hervorragend, muss jedoch ein wenig geändert werden:
(Shefalis Lösung hatte den Nachteil, dass sie beim Kneifen nicht kontinuierlich skaliert wurde. Außerdem wurde beim Starten einer neuen Prise die aktuelle Bildskalierung zurückgesetzt.)
quelle
Der folgende Code hilft beim Zoomen von UIImageView ohne Verwendung von UIScrollView:
quelle
Denken Sie daran, dass Sie NIEMALS einen vergrößern
UIImage
. JE.Stattdessen zoomen Sie in das hinein und heraus, das
view
das anzeigtUIImage
.In diesem speziellen Fall können Sie eine benutzerdefinierte
UIView
Zeichnung mit benutzerdefinierter Zeichnung erstellen , um das Bild anzuzeigen, eine,UIImageView
die das Bild für Sie anzeigt, oder eine,UIWebView
die zusätzlichen HTML- Code zum Sichern benötigt.In allen Fällen müssen Sie implementieren
touchesBegan
,touchesMoved
und dergleichen , um zu bestimmen , was der Benutzer versucht , zu tun (Zoom, Pan, etc.).quelle
Hier ist eine Lösung, die ich zuvor verwendet habe und für die Sie UIWebView nicht verwenden müssen.
Der Artikel ist im Apple Support unter folgender Adresse verfügbar: http://discussions.apple.com/message.jspa?messageID=7276709#7276709
quelle
Die Antworten von Shafali und JRV wurden um Schwenken und Drücken zum Zoomen erweitert:
quelle
Der einfachste Weg, dies zu tun, wenn Sie nur ein wenig zoomen möchten, besteht darin, Ihr Bild in einem zu platzieren
UIWebView
(schreiben Sie eine kleine Menge HTML-Wrapper-Code, verweisen Sie auf Ihr Bild, und Sie sind im Grunde fertig). Der kompliziertere Weg, dies zu tun, besteht darintouchesBegan
, die Finger des Benutzers zu verwendentouchesMoved
undtouchesEnded
zu verfolgen und die Transformationseigenschaft Ihrer Ansicht entsprechend anzupassen.quelle
Denken Sie daran, dass Sie UIImage nicht vergrößern oder verkleinern möchten. Versuchen Sie stattdessen, die Ansicht, die den UIImage View Controller enthält, zu vergrößern / zu verkleinern.
Ich habe eine Lösung für dieses Problem gefunden. Schauen Sie sich meinen Code an:
NB: Vergessen Sie nicht, den PinchGestureRecognizer anzuschließen.
quelle