【问题标题】:iOS UIImageView Layering questioniOS UIImageView 分层问题
【发布时间】:2011-03-02 01:32:53
【问题描述】:

我确信这个问题已经在很多地方得到了回答,但我不知道要搜索什么关键字来回答这个问题。如果有人可以将我链接到答案,那就太好了。

我不确定如何控制哪些 UIImageViews(它们都被同一个视图子查看)在视觉上覆盖其他的。换句话说,如果我将一个 UIImageView 子查看到与另一个 UIImageView 相同的位置,则添加的第二个总是覆盖第一个。我不确定如何在 UI 编辑器或代码中执行此操作。到目前为止,我一直按照我希望它们出现的顺序添加它们,但我不能总是这样做。特别是如果我需要将 UIImageView 设置为 IBOutlet 并且我需要它位于我以编程方式添加的所有 UIImageView 之上。

谁能告诉我如何以编程方式执行此操作,以及如何在 UI 编辑器中设置值?谢谢。

【问题讨论】:

    标签: ios uiimageview


    【解决方案1】:

    UIView 有几个 API 可以处理这些问题:

    • 添加子视图时:
      • insertSubview:aboveSubview:
      • 插入子视图:atIndex:
      • insertSubview:belowSubview:
    • 以 z 顺序移动子视图:
      • bringSubviewToFront:
      • sendSubviewToBack:
      • exchangeSubviewAtIndex:withSubviewAtIndex:

    关于所有这些的更多细节可以在UIView documentation(其中 UIImageView 是一个子类)中找到。

    【讨论】:

      【解决方案2】:

      这是在UIView layer 完成的,并不特定于 UIImageViews。

      可以使用以下 UIView 方法以编程方式“重新分层”视图:

      – addSubview:
      – bringSubviewToFront:
      – sendSubviewToBack:
      – removeFromSuperview
      – insertSubview:atIndex:
      – insertSubview:aboveSubview:
      – insertSubview:belowSubview:
      – exchangeSubviewAtIndex:withSubviewAtIndex:
      

      要在 Interface Builder 中对 XIB 执行此操作,请重新排序此视图中列出的视图,底行是最前面的对象:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多