アプリの再起動時にUIScrollViewのズームレベルと位置を動的に復元する方法は?

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

質問

私のアプリケーションはUIImageView内のUIScrollViewで構成され、その中に大きな画像を表示します。スクロールビューを使用すると、ユーザーはピンチして画像をズームイン/ズームアウトできますが、すべて正常に機能しているようです。

ただし、アプリケーションを終了してから再起動すると、<=>は元のズームレベルで画像を再度表示します(現在は画像全体を表示するように設定されており、<!> quot;アスペクトフィット<!> quot;モード)。

本当にアプリを再起動して、アプリが終了したときに設定されたのと同じパラメーターで<=>を再起動できるようにしたいと思います。そのため、現在画像が最大に拡大されており、その左下までスクロールされている場合は、アプリを再度開いたときに表示されるはずです。

これを行うにはどうすればよいですか

役に立ちましたか?

解決

UIScrollViewをプログラムでズームする方法を見つけました。これにより、起動時に目的のズームレベルを設定できます。

必要なズームマジックをカプセル化するZoomScrollViewクラスと、UIScrollViewズームの仕組み(および理由)の詳細な説明を含むサンプルコードは、 github.com/andreyvit/ScrollingMadness/

他のヒント

ビューの.transformプロパティを確認します。ズームインしている場合、これを変更する必要があります。次回の起動時に保存して復元します。

誰かがこれをしばらく前に尋ねましたが、答え。うまくいけばもっと良いものが手に入るでしょう。

このようにします: 終了したら、ズームレベル(myScrollview.zoomScale)とcontentviewフレームの原点を保存します。

再度開くと、ズームスケールを設定できます。また、コンテンツサイズを新しいズームレベルに設定する必要があります。そうしないと、境界が正しくありません。

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

オフセットを設定するには:

[myScrollView setContentOffset:savedFrameOrigin animated:YES];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top