我试图利用transitionFromView:toView:duration:options:completion:但在uiview类参考中,这一点使我感到困惑。这是什么意思?


  此方法仅修改其视图层次结构中的视图。确实
  请勿以任何方式修改应用程序的视图控制器。对于
  例如,如果您使用此方法来更改由
  视图控制器,您有责任更新视图
  控制器适当地处理更改。


请查看示例项目https://anonfiles.com/file/521cbb41b086eae987fe27eb98278aba

在这个项目中,我只调用了transitionFromView:toView:duration:options:completion:,并且一切正常,并且没有进行以上提到的任何操作。

最佳答案

如果我正确理解了您的发帖,您更有可能要求提供Apple文档的解释,而不是特定的问题。

不过,我会给您这个解释,希望对您有所帮助:

你写:


  一切都很好。


那是因为您在这里表现不错!

根据MVC设计模式(模型-视图-控制器),您在代码中使用类UIViewController(“ C”)和UIView(“ V”)。

视图包含对象(如标签,按钮,子视图等)的视觉表示,而没有其行为的逻辑。

视图控制器提供逻辑,例如。 G。 IBAction方法和您可能实现的任何其他方法。

每个UIViewController都有其自己的“ view”属性,其中包含视图,该行为由控制器管理。此视图通常包含其他视图,例如。 G。标签,图像和按钮。它们是子视图,并存储在视图的“子视图”数组属性中。顺便说一句,每个视图都具有这样的subviews属性-也就是说,我们如何实现复杂的视图层次结构。

在您的情况下(由一个公共viewcontroller管理的多个子视图),该方法

transitionFromView:toView:duration:options:completion:


在动画的支持下隐藏“ fromView”并取消隐藏“ toView”。这是视图之间的过渡。文档中的段落将为您提供开发人员的准备,该方法仅管理视觉表示的更改,并且不为您的视图控制器提供其他“服务”以进一步管理参与的视图。

这意味着您必须管理e。 G。您自己的代码的视图状态(该视图实际上为用户提供了交互)。在我看来,您管理得很好!

在更大范围内,iOS也支持UIViewController容器-它们可以包含子视图控制器(该子视图控制器再次包含其视图及其子视图)。在这种架构中,SDK提供了另一种过渡方法,

transitionFromViewController:toViewController:duration:options:animations:completion:


这样您就可以不在两个视图之间实现过渡,而在两个视图控制器之间实现过渡。

我希望这不是太多的文字,可以帮助您使事情更清楚。

关于ios - transitionFromView:toView:duration:options:completion:confusion,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17586142/

10-13 04:00