【问题标题】:Swift UIView background color opacitySwift UIView 背景颜色不透明度
【发布时间】:2015-02-10 21:40:30
【问题描述】:

我有一个UIView,里面有一个UILabel。我希望 UIView 具有白色背景色,但不透明度为 50%。设置view.alpha = 0.5 的问题是标签的不透明度也为 50%,所以我发现可能有一个 UIView 具有白色背景颜色和不透明度(white_view),然后有另一个带有标签的UIView (label_view)。然后通过执行以下操作将“white_view”添加到“label_view”:label_view.addSubview(white_view)。这显然行不通。我想这样做:label_view.backgroundView(white_view),但您不能像在 UICollectionView 中那样在 UIView 上设置背景视图。

有人知道如何解决这个问题吗?

编辑 因为几个答案大致相同,所以我会在这里输入。 现在我什至尝试了这些:

label_view1.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
label_view1.addSubview(firstPlacelbl)
endGameView.addSubview(label_view1)

label_view1.backgroundColor = UIColor(white: 1, alpha: 0.5)
label_view1.addSubview(firstPlacelbl)
endGameView.addSubview(label_view1)

标签仍然受到 alpha 的影响,它的不透明度为 50%。我不明白我做错了什么,因为我只将颜色 alpha 设置为 0.5 而不是标签。有什么想法吗?

【问题讨论】:

  • 如果我对这个问题的理解正确,您希望有一个半透明的UIView 和一个不透明的白色背景作为UILabel 的背景。 Afaik,UILabels 默认情况下具有完全透明的背景,因此如果您希望它具有背景颜色,则必须将其背景颜色设置为白色。因此,您不需要介于两者之间的视图。此外,您可以适当地设置情节提要中的所有内容(如果您使用它)。
  • 我想要一个半透明的UIView,背景颜色为白色,并在其顶部添加标签(如果不能在新视图中使用)。所以它就像一个半透明的盒子,上面有一个 100% 可见的标签。我认为@Vitaliy 下面的回答应该有效!

标签: ios swift uiview alpha


【解决方案1】:

适用于 Swift 4.x 及更高版本

yourView.backgroundColor = UIColor.black.withAlphaComponent(0.5)

【讨论】:

    【解决方案2】:

    您可以将视图的背景颜色设置为带有alpha的UIColor,并且不影响view.alpha

    view.backgroundColor = UIColor(white: 1, alpha: 0.5)

    view.backgroundColor = UIColor.red.withAlphaComponent(0.5)

    【讨论】:

    • 这看起来像我要找的。我会在星期一回家的时候试一试,然后告诉你!
    • 您需要将父 UIView 背景颜色设置为带有 alpha 的 UIColor:endGameView.backgroundColor = UIColor(white: 1, alpha: 0.5) 而不是您的 UILabel
    • 正是我想要的
    【解决方案3】:

    在 Swift 中很简单。只需将此颜色放入背景视图颜色中即可。

    let dimAlphaRedColor =  UIColor.redColor().colorWithAlphaComponent(0.7)
    yourView.backGroundColor =  dimAlphaRedColor
    

    【讨论】:

      【解决方案4】:

      问题老了,但好像也有人有同样的顾虑。

      您如何看待“UIColor 的 alpha 属性和 Interface Builder 的 opacity 属性在代码中的应用不同”的观点?


      在 Interface Builder 中创建的两个视图最初是不同的颜色,但当条件发生变化时必须是相同的颜色。 因此,我不得不在代码中设置一个视图的背景颜色,并设置不同的值以使两个视图的背景颜色相同。

      作为一个实际的例子,Interface Builder 的背景颜色为 0x121212,Opacity 值为 80%(在 Amani Elsaed 的图像中::红色:18,绿色:18,蓝色:18,十六进制颜色#:[121212],不透明度:80), 在代码中,我将另一个视图的背景颜色设置为 0x121212,alpha 值为 0.8。

      self.myFuncView.backgroundColor = UIColor(red: 18, green: 18, blue: 18, alpha: 0.8)
      

      扩展名

      extension UIColor {
          convenience init(red: Int, green: Int, blue: Int, alpha: CGFloat = 1.0) {
              self.init(red: CGFloat(red) / 255.0,
                        green: CGFloat(green) / 255.0,
                        blue: CGFloat(blue) / 255.0,
                        alpha: alpha)
          }
      }
      

      然而,实际的看法是

      • “在 Interface Builder 中指定背景颜色的视图”:R 0.09 G 0.09 B 0.09 alpha 0.8。
      • '按代码查看背景颜色':R 0.07 G 0.07 B 0.07 alpha 0.8

      计算它,

      • 0x12 = 18(十进制)
      • 18/255 = 0.07058...
      • 255 * 0.09 = 22.95
      • 23(十进制)= 0x17

      所以,我可以通过将 UIColor 值设置为 17、17、17 和 alpha 0.8 来类似地匹配颜色。

      self.myFuncView.backgroundColor = UIColor(red: 17, green: 17, blue: 17, alpha: 0.8)
      

      或者谁能告诉我我错过了什么?

      【讨论】:

        【解决方案5】:

        设置视图的alpha 属性会影响其子视图。如果您只想透明背景将视图的backgroundColor 属性设置为 alpha 分量小于 1 的颜色。

        view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
        

        【讨论】:

        • 谢谢,这似乎就像下面@V​​italiy 的回答。我也会试试这个,周一让你知道!谢谢
        • 嘿,请检查我的编辑!我已经尝试了您的解决方案,但它并没有按照我想要的方式工作!
        • 斯威夫特 3:UIColor.white.withAlphaComponent(0.5)
        • 这就是我所需要的,不影响视图的子视图。
        【解决方案6】:

        您也可以通过更改颜色的不透明度从InterfaceBuilder 设置它:

        【讨论】:

        • 这是理想的选择,因为更改视图本身的 alpha 值会逐渐下降并影响其中的任何内容。
        【解决方案7】:

        你发现的问题是view和你的UIView不一样。 “视图”是指整个视图。例如,您的主屏幕是一个视图。

        您需要将整个“视图”清楚地分开您的“UIView”和“UILabel”

        您可以通过转到您的故事板、单击项目、身份检查器并更改 Restoration ID 来完成此操作。

        现在使用恢复 ID 访问代码中的每个项目

        【讨论】:

        • 我只使用 UIViews,例如:`var label_view = UIView()',并且视图是通过编程完成的,没有使用故事板。谢谢你的提示!
        猜你喜欢
        • 2011-12-22
        • 2013-02-05
        • 1970-01-01
        • 1970-01-01
        • 2014-03-22
        • 2017-08-11
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多