在视图中重叠 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的主要内容,如果未能解决你的问题,请参考以下文章
如何避免在android中的relativelayout中重叠视图