iOS状态恢复动画bug

我只是想在我的一个应用程序中实现iOS State-Restoration API。 在最终实现它之后,我发现我以模态方式呈现的ViewController使用动画来恢复,这不是我想要的。 我希望我的应用程序只是处于我离开它的状态,但没有让用户看到他到达那里的热点。

所以我继续下载Apple示例代码: https : //developer.apple.com/library/ios/samplecode/StateRestore/Introduction/Intro.html并想知道它是否也在那里发生。 事实certificate它确实如此。

此外,日志中还有一个警告:

Unbalanced calls to begin/end appearance transitions for . 

你能否告诉我,如果我和Apples示例代码显然做错了,或者它是否是iOS中的错误?

顺便说一句。 我在iOS8上测试

感谢任何帮助,乔治

以下解决方案直接来自Apple。

在你的app delegate中,你应该实现application:willFinishLaunchingWithOptions:代替didFinishLaunching或者除了didFinishLaunching )。 在您的实现中,可能作为返回true之前的最后一行(如果这是Objective-C则为YES),插入以下行:

 self.window?.makeKeyAndVisible() 

或者,如果这是Objective-C:

 [self.window makeKeyAndVisible]; 

事实certificate这总是需要的,但文档从未明确过。

来自文档: 在启动时保留应用程序的视觉外观

请参阅下面的清单中的第3项。

实施国家保护和恢复清单

支持状态保存和恢复需要修改应用程序委托和查看控制器对象以对状态信息进行编码和解码。 如果您的应用程序具有任何也具有可保存状态信息的自定义视图,则还需要修改这些对象。

将状态保存和恢复添加到代码时,请使用以下列表提醒您需要编写的代码。

  • (必需)在应用程序委托中实现应用程序:shouldSaveApplicationState:和application:shouldRestoreApplicationState:methods; 请参阅在应用程序中启用状态保留和恢复。
  • (必需)通过为其分配非空字符串,将恢复标识符分配给要保留的每个视图控制器
    restorationIntifntifier property; 请参阅标记视图控制器以进行保留。

    如果要保存特定视图的状态,请将非空字符串分配给其restorationIdentifier属性; 请参阅保留您的观点状态。

  • (必填)从​​应用程序显示应用程序窗口:willFinishLaunchingWithOptions:应用程序委托的方法。 状态恢复机制需要窗口,以便它可以恢复滚动位置和应用程序界面的其他相关位。

  • 将恢复类分配给适当的视图控制器。 (如果
    你不这样做,你的应用代表被要求提供
    恢复时相应的视图控制器。)请参阅恢复您的
    在启动时查看控制器。

  • (推荐)使用encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:这些对象的方法对视图和视图控制器的状态进行编码和解码; 请参阅编码和解码视图控制器的状态。
  • 使用应用程序对应用程序的任何版本信息或其他状态信息进行编码和解码:willEncodeRestorableStateWithCoder:和application:didDecodeRestorableStateWithCoder:应用程序委托的方法; 请参阅保留应用程序的高级状态。

  • 充当表视图和集合视图的数据源的对象应实现UIDataSourceModelAssociation协议。 虽然不是必需的,但此协议有助于保留这些类型的视图中的选定和可见项。 请参阅实现保护友好的数据源。

Apple示例代码似乎在Xcode 8上运行良好。

所以我想不需要额外的代码更改