只需将一个通用的 UIView 拖入 Interface Builder 中的 nib 文件,并将其类设置为您的自定义子类。您仍然可以像使用普通的 UIView 一样进行所有操作,包括拖放子视图。
您无法在 Interface Builder 中看到自定义子视图的实际外观;它只会是一个灰色的矩形。我认为您可能可以在 Xcode 3 中使用 IB 插件来完成此操作,但至少目前为止,Xcode 4 不支持此类插件。
编辑:
针对问题的后续处理,您需要通过编程方式管理 z-ordering。最简单的方法可能是让您的代码基本保持不变,但是不要像下面这样做:
UIView *mySubview1 = ...;
UIView *mySubview2 = ...;
UIView *mysubview3 = ...;
[self addSubview:mySubview1];
[self addSubview:mySubview2];
[self addsubview:mySubview3];
(正如您所指出的那样)可能会将子视图叠加在用户子视图之上,因此请执行以下操作:
做类似这样的事情:
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],但我认为在快速浏览代码时,添加并将其移至后面会更清晰一些。
最终的结果是,你不必去处理子视图现有的z-ordering;通过将它们放在一个单独且易于管理的容器中,你可以将整个集合移动到子视图层次结构中任何你想要的位置。
[self.view addSubview:mySubview1];
。 - Supertecnoboff