Lange Rede, kurzer Sinn, ich versuche eine ähnliche Funktionalität wie Photos.app zu erstellen.
Ich habe ein UIScrollView mit einem UIImageView darin im Storyboard eingerichtet. Das Zoomen funktioniert, aber ich habe Probleme, es zentriert zu halten. In all meinen framebasierten Scroll-View-Implementierungen habe ich es wie folgt zentriert, was wunderbar funktioniert:
%Vor%Aber mit Auto Layout ist es überhaupt nicht.
Ich habe keine Einschränkungen für UIScrollView oder UIImageView, da ich nicht weiß, was sie sein sollten. Ich denke, ich sollte das UIScrollView an die vier Ecken kleben, aber für die UIImageView bin ich nicht ganz sicher, wie das Zoomen seinen Rahmen ändert.
Hier ist ein Beispielprojekt: Ссылка
Wie würde ich mit Zentrieren mit Auto Layout arbeiten?
Bei der Verwendung von Autolayout nehmen die Aufrufe von setFrames keine Effekte an, weshalb die imageView nicht in Ihrer scrollView zentriert ist.
Um den Center-Effekt zu erzielen, können Sie zwischen folgenden Optionen wählen:
Am einfachsten ist es, translatesAutoresizingMaskIntoConstraints
auf YES
für Ihre imageView in ViewDidLoad
zu setzen, das die Aufrufe von setFrame:
in neue Einschränkungen umwandelt, basierend auf Ihrer imageView autoresizingMask . Aber Sie sollten sicherstellen, dass die neuen Einschränkungen mit denen, die Sie in Ihrem Storyboard festgelegt haben, zufrieden sind (in Ihrem Fall keine).
Fügen Sie in Ihrer scrollViewDidZoom:
-Methode direkt die Einschränkungen hinzu, um Ihre imageView
-
%Vor%Um den Inhalt zu zentrieren, können Sie den Verweis aus diesem Code-Snippet nehmen:
%Vor%Auf diese Weise können Sie die Koordinaten eines Bildes nach dem Vergrößern und Verkleinern ohne AutoLayout neu positionieren. Bitte lassen Sie mich wissen, wenn es hilft. Danke:)
Tags und Links objective-c ios autolayout uiimageview uiscrollview