在 UIView 中隐藏非子 UIView

Posted

技术标签:

【中文标题】在 UIView 中隐藏非子 UIView【英文标题】:Hide non child UIView in UIView 【发布时间】:2016-10-01 12:44:23 【问题描述】:

我想在UIView 中隐藏一个非儿童UIView,但我不知道该怎么做。

具体来说,我有一个UITableView。每个UITableViewCell 内部都有另一个视图(称为wrapperView 的包装视图)。包装器在 IB 中设置了一些标签,并以编程方式创建了一些标签。我创建了一种自定义滑动机制,可以显示包装器下的按钮(就像标准的那样)。

以编程方式创建的标签不会超出包装器的边界,因为它会剪切子视图。问题在于在 IB 中创建的标签。它们是contentView的子视图。

如何解决? UIView 有没有办法在同一级别剪辑其他视图(不是父母也不是孩子)?还是将标签“转移”到包装视图?

【问题讨论】:

"有没有办法让 UIView 剪辑同级视图" 不。更好地组织你的视图,让它按你的意愿工作。关于“以编程方式创建的标签”,我认为您的问题非常简单-您应该将它们设为另一个 UIView 的孩子-就这么简单。 【参考方案1】:

您的要求并不完全清楚。视图只会剪辑它的子视图,而不是恰好落在其框架矩形内但不是子视图的视图。

如果您想将视图对象从一个视图层次结构移动到另一个视图层次结构,您可以使用addSubview(_:) 来执行此操作。这将自动将其从当前父视图中删除。引用 Apple 文档:

视图只能有一个超级视图。如果视图已经有一个超级视图并且 那个view不是receiver,这个方法去掉了之前的 在将接收器设置为新的超级视图之前的超级视图。

【讨论】:

我的猜测是 OP 根本不明白,当您“以编程方式”创建视图时,您当然可以设置该新视图的父视图。 我非常清楚这些概念,而且我知道视图会剪切它的子视图。我要求一种方法来剪辑不是它的子视图的其他视图。谢谢你的回答,邓肯!效果很好。

以上是关于在 UIView 中隐藏非子 UIView的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 $(this) 与非子元素结合使用?

如何在 iPhone 中隐藏/显示带有动画的 UIView

在隐藏的 UIView 中接收触摸事件?

当调整大小小于元素时,如何使元素隐藏在 UIView 中

在ios4.2中隐藏带有动画的uiview

显示和隐藏 UIView