当我的应用程序重新启动时,如何动态恢复 UIScrollView 的缩放级别和位置?

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

我的应用程序包括 UIImageView 里面一个 UIScrollView, ,然后我在其中显示一个大图像。滚动视图允许用户通过捏合来放大/缩小图像,这一切似乎都工作得很好。

但是,当我的应用程序终止然后重新启动时, UIScrollView 以原始缩放级别再次显示图像(当前设置为通过在“宽高比适合”模式下缩放图像来显示整个图像)。

我真的希望能够重新启动我的应用程序并拥有 UIScrollView 使用应用程序终止时设置的相同参数重新打开。因此,如果我的图像当前放大到最大,并一直滚动到其左下角,那么这应该是我再次打开应用程序时的视图。

我怎样才能做到这一点?

有帮助吗?

解决方案

我找到了一种以编程方式缩放 UIScrollView 的方法。这可以帮助您在启动时设置所需的缩放级别。

示例代码以及封装所需缩放魔法的 ZoomScrollView 类以及 UIScrollView 缩放如何(以及为何)工作的详细讨论可在以下位置找到: github.com/andreyvit/ScrollingMadness/.

其他提示

检查视图的.transform属性。如果您正在放大,这应该被修改。保存并在下次启动恢复。

有人问这前一段时间,但我不认为你会喜欢的答案。希望你会得到一个更好的。

我不喜欢这样: 当退出保存缩放级别(myScrollview.zoomScale)和内容查看帧原点。

当重新打开可以设置zoomscale。您还可以设置内容的大小,以新的缩放级别,因为否则的界限是不正确的。

    [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