gpt4 book ai didi

ios - 为什么我需要直接访问 View 容器而不是访问它的 View Controller 的 View 来制作动画?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:50 25 4
gpt4 key购买 nike

我设置了一个 View Controller ,其中包含多个容器 View ,每个容器 View 都有自己对应的 View Controller 。在包含所有 View Controller 的代码中,我将嵌入式/ subview Controller 作为属性,我在 prepareForSegue 中设置了它们,因为它们是嵌入的 segues。

现在,如果我尝试访问其中一个 subview Controller 的 View ,例如 childViewController.view.frame 以移动它,当我尝试移动它时,它只是将它推过一个一点点在 View Controller 内部,而不实际移动 View Controller 本身。

但是,如果在 Storyboard 中,我为包含 View Controller 的容器 View 中的每个容器 View 创建了一个导出,并使用 childView.frame,它会很好地正确移动 FULL View Controller 。

这是为什么?他们不是都在引用相同的 View 吗?

最佳答案

不,它们引用的不是同一个 View 。 childView 只是一个普通的 UIView,它是容器 Controller 的 subview 。 childViewController.view 是 subview Controller 的 View ——该 View 是 childView 的 subview 。所以,如果你想移动 subview Controller 的 View ,你需要移动它的父 View ,childView(这两个 View 具有相同的大小,所以你不能在 childView 内移动 subview Controller 的 View ,除非它越界).

你在 IB 中所做的,等同于代码中的这个(其中 childVC 是嵌入式 View Controller ,而 containerView 是父 View 中的 subview )。此代码将在容器 Controller 中。

[self addChildViewController: childVC];
[childVC didMoveToParentViewController:self];
childVC.view.frame = self.containerView.bounds;
[self.containerView addSubview:childVC.view];

关于ios - 为什么我需要直接访问 View 容器而不是访问它的 View Controller 的 View 来制作动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20646848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com