Swift UIView背景颜色不透明度


74

我有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)但你不能设置一个背景视图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,而不是标签。有任何想法吗?


如果我正确地理解了这个问题,则您希望它具有半透明UIView和非透明的白色背景UILabelUILabel默认情况下,Afaik具有完全透明的背景,因此,如果要使其完全具有背景色,则必须将其背景色设置为白色。因此,您不需要两者之间的视图。另外,如果使用的话,您可以在情节提要中适当地设置所有内容。
Nero

我想使用半透明UIView的白色背景色,并在其顶部贴上标签(如果不能在同一视图中使用新视图)。因此,这就像一个半透明的盒子,上面的标签是100%可见的。我认为下面的@Vitaliy答案应该有效!
user2099024 2014年

Answers:


160

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

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

要么

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


这看起来像我要找的东西。我将在周一回家时尝试一下,并告诉您!
user2099024

您需要将父UIView背景颜色设置为带有alpha的UIColor:endGameView.backgroundColor = UIColor(white: 1, alpha: 0.5)不是您的UILabel
Vitalii Gozhenko 2014年

正是我要找的东西
John Leonardo'Mar

68

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

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

谢谢,这似乎就像下面的@Vitaliy的回答。我也会尝试这个,并在星期一通知您!谢谢
user2099024 2014年

嘿,请检查我的编辑!我已经尝试过您的解决方案,但无法按我想要的方式工作!
user2099024

5
迅捷3:UIColor.white.withAlphaComponent(0.5)
BlueBoy

这就是我需要的,以不影响视图的subView。
ChuckZHB

31

在Swift 3.0中

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

这在xcode 8.2中对我有效。

它可能会帮助您。



1

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

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

您可以通过转到情节提要,单击该项目,Identity Inspector并更改来完成此操作Restoration ID

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


我只使用UIViews,例如:`var label_view = UIView()',并且视图以编程方式完成,没有使用故事板。谢谢你的小费!
user2099024

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)

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


0

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

let dimAlphaRedColor =  UIColor.redColor().colorWithAlphaComponent(0.7)
yourView.backGroundColor =  dimAlphaRedColor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.