【问题标题】:iOS how to make subview of a transparent view opaque?iOS如何使透明视图的子视图不透明?
【发布时间】:2014-09-28 02:53:34
【问题描述】:

我有一个视图作为另一个视图的子视图,然后我将父视图的 alpha 值设置为 0.5,但这也使子视图即使在其 alpha 值设置为 1 时也是透明的。那么我该如何制作当父视图的 alpha 值小于 1 时,子视图不透明(不透明)?

【问题讨论】:

  • 我是新来的,如果有人能告诉我为什么我的问题被否决,我将不胜感激?然后我可以在以后的问题中避免这样的问题。
  • @JoeBlow 感谢您如此详细的回复!
  • 不要忘记简单的解决方案是,不要让 B 成为该视图 A 的孩子。让 B 成为持有两者的“持有人”的孩子,但让 B 在上面。

标签: ios


【解决方案1】:

您最接近的是colorWithAlphaComponent:。使用类似下面的方法,你可以设置父视图背景的 alpha 分量,它不会影响子视图。

[yourSuperview setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.5]];

【讨论】:

    【解决方案2】:

    如果您将父视图设置为 0.5,则所有子视图也将变为 0.5 或更低。你必须想出不同的设计方法。

    【讨论】:

      【解决方案3】:

      对于 Swift 4.2

          self.yoursuperview.backgroundColor = UIColor.black.withAlphaComponent(0.5)
      

      【讨论】:

        【解决方案4】:

        以下方法对我有用。

        superView.backgroundColor = .clear
        

        现在 superview 的 alpha 属性没有改变,它不会影响其子视图的 alpha。因此,子视图将是不透明的(如果您有背景颜色)。

        【讨论】:

          【解决方案5】:

          父视图应该有两种设计。一种是“启用”设计,按原样显示,另一种是“禁用”设计,其中包含透明背景。

          你不能用 alpha 做到这一点,因为子视图继承了 alpha。如果

          parent.alpha = x

          view.alpha = y,

          那么视图的真正 alpha 将是:

          x * y

          【讨论】:

          • 为什么这么复杂..??查看其他答案以获得更好的方法
          【解决方案6】:

          我认为,您已经通过 Storyboard 创建了视图。我已经面临这个问题。找到下面的代码,这在我的情况下是正确的。

          [MyParentView setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.6]];
          

          希望,这可能对你有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-11-27
            • 1970-01-01
            • 2018-12-07
            • 1970-01-01
            • 1970-01-01
            • 2011-09-01
            • 2011-05-15
            相关资源
            最近更新 更多