0

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

此方法仅修改视图层次结构中的视图。它不会以任何方式修改应用程序的视图控制器。例如,如果您使用此方法更改视图控制器显示的根视图,则您有责任适当地更新视图控制器以处理更改。

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

在这个项目中,我刚刚打电话transitionFromView:toView:duration:options:completion:,一切正常,没有做上述提到的事情。

4

1 回答 1

1

如果我正确理解您的帖子,您更有可能要求对 Apple 文档的解释而不是具体问题。

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

你写:

一切正常。。

那就是,因为你在这里做得很好!

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

视图包含对象(如标签、按钮、子视图等)的可视化表示,但它们的行为没有逻辑。

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

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

在您的情况下(由一个通用视图控制器管理的多个子视图),该方法

transitionFromView:toView:duration:options:completion:

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

这意味着,您必须通过自己的代码管理例如视图的状态(哪个视图实际上为用户提供交互)。在我看来,你已经做得很好了!

在更广泛的范围内,iOS 也支持 UIViewController 容器——它们可以包含子视图控制器(它们再次包含它们的视图及其子视图)。在这样的架构中,还有另一种来自 SDK 的过渡方法,

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

它允许您实现不是在两个视图之间而是在两个视图控制器之间的转换

我希望这不是太多的文字,有助于让你更清楚。

于 2013-07-11T07:04:42.500 回答