【问题标题】:Is it possible to get a snapshot of a view controller including its status bar if it's not currently visible on screen?如果当前在屏幕上不可见,是否可以获得视图控制器的快照,包括其状态栏?
【发布时间】:2014-05-11 15:18:08
【问题描述】:

假设我正在使用 iOS 7 的交互式视图控制器转换做某事,我收到了 toViewControllerfromViewController,目前屏幕上只有 fromViewController 可见。

如果我想获得fromViewController 的快照,我可以轻松做到:

UIView *fromViewControllerSnapshot = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES];

但如果我正在寻找包含toViewController 状态栏的快照,我不确定该怎么做,因为它在屏幕上还不可见。

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

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

【问题讨论】:

  • 如果您的要求是拍摄完整视图控制器的快照,其中包含可见和不可见对象以在没有状态栏的情况下捕获,我可以提供帮助.. 如果是这种情况,请告诉我..

标签: ios objective-c ios7 uiview uiviewcontroller


【解决方案1】:

必须自己操作快照以使用UIScreen 快照将其放在那里。

您所做的实际上是对应用程序的全屏进行快照,而不是对有问题的视图控制器进行快照。在这种情况下,它恰好占据了全屏,但通常不是您会做的。

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

如果您查看其他应用程序处理此问题的方式,尤其是内置转换,屏幕上通常只有一个状态栏实例。如果另一个视图滑入或动画,状态栏会出现/消失/更改颜色,但新视图永远不会在另一个视图上设置动画。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
相关资源
最近更新 更多