gpt4 book ai didi

iphone - 与 insertSubView 的索引值混淆

转载 作者:行者123 更新时间:2023-11-29 04:50:26 26 4
gpt4 key购买 nike

我知道 insertSubView 会在 iPhone 应用程序 View 层次结构的某个索引处插入一个新 View 。

我也明白

insertSubView atIndex:[[self.view subview ] 计数]

将在最顶部插入 subview ,使其成为唯一可见的 View 。这类似于 addSubview。

但是,我仍然是一个新手,我对“ View ”中包含的内容有点困惑。

我有一个根 Controller ,在它的 View 中有 3 个按钮。

root view

我正在尝试使用 addSubView 来了解它是如何工作的,当我在 Index:1 处执行 insertSubview 时,我得到了以下结果:

index 1

看起来我添加的新 View 是在按钮 1 之后、按钮 2 和按钮 3 之前添加的。如果我将索引更改为 2,则只会显示按钮 3,因此看起来新 View 正在被添加放置在按钮 1 和 2 之后、3 之前。

这是为什么呢?为什么按钮有单独的 subview 索引?我本以为我的根 Controller View 中包含的所有内容都将属于单个 View 。它们是否以某种方式分开?

最佳答案

您所看到的完全正确。您添加button1,然后添加button2,然后添加button3。所以 View 堆栈将是:

button3 -> 索引 2
按钮2 -> 索引 1
按钮1 -> 索引0。

现在如果你这样做:insertSubview:atIndex:1,你会得到:

button3 -> 索引 3
按钮2 -> 索引2
AnotherView -> 索引 1
按钮1 -> 索引0。

这样只有button2和button3可见,因为button1因为“AnotherView”与其框架重叠而被隐藏。


同样,如果你这样做:insertSubview:atIndex:2,你会得到:

button3 -> 索引 3
AnotherView -> 索引 2
按钮2 -> 索引 1
按钮1 -> 索引0。

现在只有button3可见,因为“AnotherView”与它们的框架重叠,所以button1和button2都被隐藏了。

您还必须考虑的一件事是,z-index 本身并不能决定哪些 View 可见。只有当顶 View 有一个框架覆盖下面的 View 时,下面的 View 才会被隐藏。从您发布的图片来看,按钮的框架似乎只够显示文本,并没有占据整个窗口的框架

关于iphone - 与 insertSubView 的索引值混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948649/

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