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

时间:2009-03-17 15:50:41

标签: iphone uiscrollview uiimageview

我的应用程序由UIImageView内的UIScrollView组成,我在其中显示一个大图像。滚动视图允许用户捏合以放大/缩小图像,并且所有这些看起来都很好。

然而,当我的应用程序终止然后重新启动时,UIScrollView再次以原始缩放级别显示图像(当前设置为显示整个图像,通过“适合方面”缩放它“模式”。

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

我该怎么做?

4 个答案:

答案 0 :(得分:3)

检查视图的.transform属性。如果放大,则应进行修改。在下次发布时保存并恢复它。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

示例代码,以及封装所需缩放魔术的ZoomScrollView类以及有关如何(以及为何)UIScrollView缩放工作的详细讨论,可在github.com/andreyvit/ScrollingMadness/获得。

答案 3 :(得分:2)

我是这样做的: 退出时保存zoomlevel(myScrollview.zoomScale)和contentview框架原点。

重新打开时,可以设置缩放比例。您还必须将内容大小设置为新的缩放级别,否则边界不正确。

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

设置偏移量:

[myScrollView setContentOffset:savedFrameOrigin animated:YES];