gpt4 book ai didi

ios - 在以编程方式创建的 UIView 层次结构之上添加 subview

转载 作者:可可西里 更新时间:2023-11-01 05:47:07 25 4
gpt4 key购买 nike

我有一个 UIView 子类,它以编程方式创建和添加多个 subview 。但是,我想让该类的用户能够使用 addSubview 在它(及其 subview )上放置新的 subview ,理想情况下也可以从 Interface Builder 中放置。

执行此操作的最佳方法是什么?

现在,我认为仅使用 addSubview 以编程方式添加 View 是可以接受的,但我也不确定我将如何处理。

注意:我已经尝试使用界面构建器添加额外的 subview ,但是一旦我在上面提到的自定义 UIView 子类以编程方式创建它的其他 View ,它们就会被隐藏,大概是因为它们是最后添加的。

最佳答案

只需将一个通用的 UIView 拖到 Interface Builder 中的一个 nib 中,并将其类设置为您的自定义子类。您仍然可以使用普通的旧 UIView 做任何您能做的事情,包括拖放 subview 。

将无法看到自定义 subview 在 Interface Builder 中的实际外观;它只是一个灰色的矩形。您可以(我认为)在 Xcode 3 中使用 IB 插件完成此操作,但至少目前,Xcode 4 不支持此类插件。

编辑:

要解决 OP 的后续问题,您需要以编程方式管理 z 排序。可能最简单的事情就是让你的代码大部分保持原样,而不是做类似的事情:

UIView *mySubview1 = ...;
UIView *mySubview2 = ...;
UIView *mysubview3 = ...;
[self addSubview:mySubview1];
[self addSubview:mySubview2];
[self addsubview:mySubview3];

(正如您所指出的,它可能会将 subview 分层放置在用户的 subview 之上)

做类似的事情:

UIView *container = [[UIView alloc] initWithFrame:[self bounds]];
UIView *mySubview1 = ...;
UIView *mySubview2 = ...;
UIView *mysubview3 = ...;
[container addSubview:mySubview1];
[container addSubview:mySubview2];
[container addsubview:mySubview3];
[self addSubview:container];
[self sendSubviewToBack:container];
[container release];

您也可以使用 [self insertSubview:container atIndex:0],但我认为在快速浏览代码期间添加和移动到后面会更清楚一些。

最终结果是您不必弄乱 subview 的现有 z 顺序;通过将它们放在一个易于管理的容器中,您可以将整个集合移动到 subview 层次结构中您想要的任何位置。

关于ios - 在以编程方式创建的 UIView 层次结构之上添加 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9217901/

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