是否可以获取视图控制器的快照,包括其状态栏,如果它当前不在屏幕上可见?

时间:2014-04-01 02:49:00

标签: ios objective-c ios7 uiview uiviewcontroller

说我正在使用iOS 7的交互式视图控制器转换,我已经递送了toViewControllerfromViewController,其中只有{{1}屏幕上当前可见。

如果我想获得fromViewController的快照,我可以轻松地执行此操作:

fromViewController

但如果我正在寻找包含UIView *fromViewControllerSnapshot = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES]; 状态栏的快照,我不确定我是如何做到这一点的,因为它尚未在屏幕上显示。

至于为什么,我想将完整视图控制器(包括状态栏)向右滑动,作为过渡的一部分,以弹出它并将另一个完整视图控制器滑入同时,两者都移动各自的状态栏。

是否可以获取视图控制器的快照,而不是100%可见?

1 个答案:

答案 0 :(得分:1)

使用UIScreen快照自行处理快照并非如此。

您正在做的是实际快照应用程序的整个屏幕,而不是相关的视图控制器。在这种情况下,它恰好占据了整个屏幕,但通常不是你要做的。

这里一般正确的做法是拍摄实际视图本身的图像快照(viewController.view)并在动画中使用它们。这样,您可以让应用程序和视图控制器自行处理状态栏着色/动画。

如果你看看其他应用程序处理这种情况的方式,特别是内置转换,屏幕上通常只有一个状态栏实例。如果另一个视图滑动或动画状态,状态栏会显示/消失/更改颜色,但新的状态栏不会激活另一个视图。