在视图中重叠 UIControls

Posted

技术标签:

【中文标题】在视图中重叠 UIControls【英文标题】:Overlapping UIControls in a View 【发布时间】:2012-04-28 15:29:13 【问题描述】:

我正在创建一个自定义控件,它由两层组成,呈甜甜圈形状。中间是按钮,甜甜圈部分是转轮。

我已经将这两个部分创建为两个单独的 UIControls,并有自己的单独图像。

我现在的问题是Second Control 覆盖了我的First Control

是否有以编程方式重叠位置?

故事板截图:

请关注名为buttonView 的特定视图。 Rotary knob 是甜甜圈,Button 是中间按钮。

提前致谢。

【问题讨论】:

【参考方案1】:

我假设你的甜甜圈部分比你的中间部分大,对吧?如果是这样,我认为您应该能够使用 hitTest:WithEvent: 函数来区分两者。不过,您的中间部分需要低于层次结构中的外部部分。 hitTest 将返回被触摸的层次结构中最深的视图。

编辑 根据扩展的 cmets,问题在于它们在 XIB 中被颠倒了。切换它们,您的中间部分将出现在顶部。

【讨论】:

是的,甜甜圈上的孔是第二个控件。我将深入研究hitTest:WithEvent。我刚刚经历的另一件事是我的控制响应整个矩形,这可能是一个问题,因此我的控制是循环的。但我认为这是不可能解决的? @JavaCake 这是可能的,但您需要自己进行计算。然后你可以用你的计算覆盖函数 pointInside:withEvent:。 我的中间部分在层次结构的顶部。 我现在明白了,但考虑到我必须用我的中间控制重复同样的事情,这将成为一个痛苦的过程。我会看看是否有不同的方式来管理中间按钮。 @JavaCake 屏幕截图显示了您的按钮向后...(最靠近底部的项目是视图层次结构中最靠前的)【参考方案2】:

在包含它们的视图中,只需调用[self bringSubviewToFront:firstLayer]

【讨论】:

我已更正了我的符号中的一个错误。问题不在于视图,而在于控件的重叠。对不起。 我不明白这个问题。视图大小是否相同?为什么不把内部控件变小并带上字体呢?

以上是关于在视图中重叠 UIControls的主要内容,如果未能解决你的问题,请参考以下文章

在视图中重叠 UIControls

如何避免在android中的relativelayout中重叠视图

searchBar 与部分标题视图重叠尚未回答:需要在 Swift 3 中回答

IOS 6子视图在父视图中重叠工具栏

动态添加的视图在相对布局中重叠

在约束布局中的按钮上重叠图像视图