Swift UIView背景颜色不透明度

时间:2014-12-12 07:58:48

标签: ios swift uiview alpha

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

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

修改 因为几个答案大致相同,我会在这里输入。 现在我甚至尝试过这些:

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而不是标签。有什么想法吗?

7 个答案:

答案 0 :(得分:126)

您可以使用alpha将视图的背景颜色设置为UIColor,而不会影响view.alpha view?.backgroundColor = UIColor(white: 1, alpha: 0.5)

答案 1 :(得分:45)

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

view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)

答案 2 :(得分:25)

Swift 3.0中的

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

这适用于xcode 8.2。

它可能对你有帮助。

答案 3 :(得分:8)

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

enter image description here

答案 4 :(得分:1)

您发现的问题是view与您的UIView不同。 '视图'指的是整个视图。例如,您的主屏幕是一个视图。

您需要明确区分整个视图'你的' UIView'和你的' UILabel'

您可以通过转到故事板,单击项目,Identity Inspector以及更改Restoration ID来完成此操作。

现在使用恢复ID

访问代码中的每个项目

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

问题很老,但似乎有些人也有同样的担忧。

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


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

作为一个实际示例,Interface Builder的背景色为0x121212,不透明度值为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)

或者有人可以告诉我我想念的东西吗?