Ich habe UIImageView
und es hat ein Bild größer als die Bildschirmgröße. Ich habe diese UIImageView
als Unteransicht von UIScrollView
. Jetzt kann ich nicht nach unten scrollen. um das ganze Bild zu sehen. Aber die Zoomfunktionen funktionieren einwandfrei.
Sie müssen zwei Hauptprobleme an Ihrem UIScrollView
work
UIScrollView
initialisieren, ich meine die Funktion viewDidAppear
. UIScrollView
wie Top
, Bottom
, Left
und Right
auf 0 setzen und Ihre SuperView
respektieren. Wenn Sie den Code innerhalb Ihres viewDidAppear
innerhalb Ihrer Funktion viewDidLoad
einfügen und Ihre Funktion viewDidAppear
löschen, funktioniert das wie gewünscht. Wie auf folgende Weise:
Sie müssen auch die Einschränkungen für UIScrollView
in Ihrem Storyboard festlegen
Ich habe zwar festgestellt, dass das Problem in folgendem Unterschied liegt:
viewDidAppear
wird aufgerufen, wenn die Ansicht tatsächlich sichtbar ist, und kann während des Lebenszyklus eines View Controllers mehrmals aufgerufen werden (z. B. wenn ein Modal View Controller geschlossen und die Ansicht wieder sichtbar wird). Hier möchten Sie Layout-Aktionen ausführen oder Zeichnungen in der Benutzeroberfläche ausführen, z. B. einen Modal View-Controller präsentieren. Alles, was Sie hier tun, sollte jedoch wiederholbar sein. Es ist besser, die Dinge hier nicht zu behalten, sonst bekommt man Speicher
Leaks, wenn Sie sie nicht freigeben, wenn die Ansicht verschwindet. viewDidLoad
wird genau einmal aufgerufen, wenn der View-Controller zum ersten Mal in den Speicher geladen wird. Hier möchten Sie Instanzvariablen instanziieren und Ansichten erstellen, die für den gesamten Lebenszyklus dieses Ansichtscontrollers gelten. Die Ansicht ist jedoch an dieser Stelle in der Regel noch nicht sichtbar. Wenn Sie irgendein Problem haben, habe ich ein Projekt, das bereit ist, es an Github zu senden, wenn Sie es sehen wollen.
UPDATE : Nach dem Test nochmal deinen Code, ich setze deinen Fehler auf weniger Code um. Ihr Code funktioniert gut, wenn Sie Ihre Zeile
imageView.frame = CGRectMake(0, 0, size!.width, size!.height)
einfügen, funktioniert Ihr Code ohne Einschränkungen.
In etwa so:
%Vor% Der Schlüssel ist, dass Sie in Ihrem vorherigen Code die frame
für das Bild als frame
der scrollView
nicht auf die Größe des Bildes setzen, die größer ist als die scrollView
.
Ich hoffe, das hilft Ihnen.
Stellen Sie sicher, dass Sie die Benutzerinteraktion für scrollview aktiviert haben: scrollview.userInteractionEnabled=YES
UIScrollView
, fügen Sie eine UIView
(sagen wir es Containeransicht) in die Scrollview ein und fügen Sie imageview in die containerView ein.
Danach schreibe den folgenden Code in den ViewController.m
%Vor%Überprüfen Sie jetzt, ob die Doppeltipp- und Pinch-Geste funktioniert.
Stellen Sie sicher, dass die Höhe Ihrer UIScrollView nicht mehr als die Höhe der Ansicht beträgt.
Beispielcode
%Vor%Referenz: Ссылка
Um vertikal zu scrollen Sie müssen die x-Achse in der Inhaltsgröße von scrollView auf 0 setzen. und setze dies in deiner viewDidLoad Methode.
Sie müssen diese Zeile auskommentieren:
%Vor%natürlich wird es Ihnen einen Compilerfehler geben. Da der optionale Wert die Größe ist, ist der richtige Weg:
%Vor% Es scrollt nicht mit Ziehen-Gesten wegen des automatischen Layouts.
In viewDidLoad
setzt das automatische Layout die Inhaltsgröße zurück, nachdem Sie sie definiert haben. Sie haben zwei Möglichkeiten: Sie können das automatische Layout deaktivieren oder Sie können contentSize in viewDidLayoutSubviews festlegen.
Tags und Links ios swift uiimageview uiscrollview