以编程方式发送到从界面生成器创建的前/后元素

Posted

技术标签:

【中文标题】以编程方式发送到从界面生成器创建的前/后元素【英文标题】:Programmatically send to front/back elements created from interface builder 【发布时间】:2009-06-28 13:27:08 【问题描述】:

在界面生成器中,有布局选项可以发送到后面或发送到前面任何元素,例如UIButtonUIImageUILabel 等...

现在,我想在运行时以编程方式做同样的事情。

有没有简单的方法可以做到这一点?

我不想创建不同的视图,只是更新 z 轴。

【问题讨论】:

【参考方案1】:

UIView 的许多方法允许您修改视图层次结构。

bringSubviewToFront: sendSubviewToBack: insertSubview:atIndex: insertSubview:aboveSubview: insertSubview:belowSubview: exchangeSubviewAtIndex:withSubviewAtIndex:

由于您的视图已经插入到您的超级视图中,您可以轻松地为每个视图按您喜欢的顺序调用一次bringSubviewToFront:

【讨论】:

您是说我不能直接将 UIButton 发送到前/后吗?我必须创建一个视图并将其添加到该视图中。然后用上面的方法?如果是这样,控制器类是创建这样一个视图的地方吗? UIButton 是 UIView 的子类。只需调用:[[myButton superview] bringSubviewToFront:myButton]; 只是为了清除我的一个小疑问:如果您插入一个已经在视图层次结构中的子视图,操作系统只会移动它的位置。因此,只要视图存在就插入不会造成任何开销。 “为每个视图调用一次bringSubviewToFront:,无论您喜欢什么顺序”这真是一个技巧。不错。【参考方案2】:

你可以使用:

[self.view bringSubviewToFront:myButton];

【讨论】:

以上是关于以编程方式发送到从界面生成器创建的前/后元素的主要内容,如果未能解决你的问题,请参考以下文章

点击 UIButton 以编程方式创建另一个 UIButton

ObjC,在以编程方式添加/删除后恢复为界面构建器自动布局约束?

如何使用 iPhone 的 JSON 框架以编程方式生成 JSON

如何以编程方式创建表视图?

以编程方式创建具有多个标签的 UIView

如何在不使用界面生成器的情况下将视图与控制器分离