Wie dynamisch die Zoomstufe und Position des UIScrollView wiederherstellen, wenn meine app relauncht?

StackOverflow https://stackoverflow.com/questions/654845

Frage

Meine Anwendung besteht aus einem UIImageView in einem UIScrollView, und ich zeige ein großes Bild im Innern. Die Scroll-Ansicht ermöglicht es den Benutzer kneifen im Bild vergrößern / verkleinern, und das alles scheint ganz gut zu funktionieren.

Wenn jedoch meine Anwendung beendet und dann neu gestartet, zeigt die UIScrollView das Bild wieder in der ursprünglichen Zoomstufe (die derzeit gesetzt wird, um das gesamte Bild anzuzeigen, indem es in einem „Aspekte fit“ -Modus Skalierung).

Ich würde wirklich in der Lage sein mag meine App erneut zu starten und haben die UIScrollView mit den gleichen Parametern wieder öffnen, wie es eingestellt wurde, wenn die Anwendung beendet. Also, wenn mein Bild wird zur Zeit vergrößert, die Max und gescrollt den ganzen Weg nach unten links davon, dass die Ansicht sein sollte, wenn ich die App wieder öffnen.

Wie kann ich das tun?

War es hilfreich?

Lösung

Ich habe einen Weg, um programmatisch heran UIScrollView gefunden. Dies kann man die gewünschte Zoomstufe beim Start hilft gesetzt.

Der Beispielcode zusammen mit ZoomScrollView Klasse, die die gewünschten Zoom Magie und eine ausführliche Diskussion darüber, wie (und warum) UIScrollView Arbeiten ist unter github.com/andreyvit/ScrollingMadness/ .

Andere Tipps

Überprüfen Sie die .transform Eigenschaft der Ansicht. Wenn Sie gezoomt werden, sollte dies geändert werden. Speichern und Wiederherstellen von es auf dem nächsten Start.

Jemand fragte dies vor einer Weile, aber ich glaube nicht, Sie mögen die Antwort . Hoffentlich werden Sie ein besseres bekommen.

Ich mache es wie folgt aus: Wenn Sie speichern beenden Sie die Zoomstufe (myScrollview.zoomScale) und die InhaltAlle Rahmen Herkunft.

Wenn Sie wieder öffnen Sie die zoomscale einstellen. Sie haben auch die Inhaltsgröße auf die neue Zoomstufe zu setzen, da sonst die Grenzen nicht korrekt sind.

    [myScrollview setZoomScale:savedZoomScale];
    CGSize newsize = CGSizeMake(origsize.width * savedZoomScale, 
                                 origsize.height * savedZoomScale);
    myScrollview.contentSize = newsize;

Zur Einstellung der Offset:

[myScrollView setContentOffset:savedFrameOrigin animated:YES];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top