ios – 在以编程方式创建的UIView层次结构之上添加子视图

ios – 在以编程方式创建的UIView层次结构之上添加子视图,第1张

概述我有一个UIView子类,它以编程方式创建并添加了许多子视图.但是,我想让类的用户能够使用addSubview在其上放置新的子视图(及其子视图),理想情况下也可以在Interface Builder中. 做这个的最好方式是什么? 现在,我想只使用addSubview以编程方式添加视图是可以接受的,但我不确定如何进行此 *** 作. 注意:我尝试使用界面构建器添加其他子视图,但是一旦我上面提到的自定义UIV @H_419_4@ 我有一个UIVIEw子类,它以编程方式创建并添加了许多子视图.但是,我想让类的用户能够使用addSubvIEw在其上放置新的子视图(及其子视图),理想情况下也可以在Interface Builder中.

做这个的最好方式是什么?

现在,我想只使用addSubvIEw以编程方式添加视图是可以接受的,但我不确定如何进行此 *** 作.

注意:我尝试使用界面构建器添加其他子视图,但是一旦我上面提到的自定义UIVIEw子类以编程方式创建其他视图,它们就会被隐藏,大概是因为它们最后添加了.

@H_419_4@解决方法 只需将通用UIVIEw拖到Interface Builder中的nib中,并将其类设置为自定义子类.您仍然可以使用简单的旧UIVIEw完成所有 *** 作,包括拖放子视图.

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

编辑:

要解决OP的后续行动,您需要以编程方式管理z排序.可能最简单的方法是将代码保持原样,但不要执行以下 *** 作:

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排序;通过将它们放在一个易于管理的单个容器中,您可以将整个集合移动到子视图层次结构中的任何位置.

@H_419_4@ @H_419_4@ @H_419_4@ @H_419_4@ 总结

以上是内存溢出为你收集整理的ios – 在以编程方式创建的UIView层次结构之上添加子视图全部内容,希望文章能够帮你解决ios – 在以编程方式创建的UIView层次结构之上添加子视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1037290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存