当我的应用程序重新启动时,如何动态恢复 UIScrollView 的缩放级别和位置?
-
19-08-2019 - |
题
我的应用程序包括 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];
不隶属于 StackOverflow