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

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

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

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

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

故事板截图:

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

提前致谢。

【问题讨论】:

    标签: ios uiview uiviewcontroller uicontrol


    【解决方案1】:

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

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

    【讨论】:

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

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

    【讨论】:

    • 我已更正了我的符号中的一个错误。问题不在于视图,而在于控件的重叠。对不起。
    • 我不明白这个问题。视图大小是否相同?为什么不把内部控件变小并带上字体呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多