Ios Swift UIView背景色不透明度

Ios Swift UIView背景色不透明度,ios,swift,uiview,alpha,Ios,Swift,Uiview,Alpha,我有一个ui视图,其中有一个ui标签。我希望UIView具有白色背景色,但不透明度为50%。设置view.alpha=0.5的问题是标签的不透明度也会达到50%,所以我想可能会有一个背景颜色为白色且不透明度为白色的UIView(白色视图),然后有另一个UIView标签(标签视图)。然后将“白色视图”添加到“标签视图”中,方法是:label\u view.addSubview(白色视图)。这显然不起作用。我想这样做:label\u view.backgroundView(白色视图)但不能像在UIC

我有一个
ui视图
,其中有一个
ui标签
。我希望UIView具有白色背景色,但不透明度为50%。设置
view.alpha=0.5
的问题是标签的不透明度也会达到50%,所以我想可能会有一个背景颜色为白色且不透明度为白色的
UIView
(白色视图),然后有另一个
UIView
标签(标签视图)。然后将“白色视图”添加到“标签视图”中,方法是:
label\u view.addSubview(白色视图)
。这显然不起作用。我想这样做:
label\u view.backgroundView(白色视图)
但不能像在
UICollectionView
中那样在
UIView
上设置背景视图

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

编辑 因为有几个答案大致相同,所以我将在这里键入。 现在,我甚至尝试了以下方法:

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


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

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

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

您可以通过转到情节提要,单击项目、标识检查器并更改
恢复ID
来完成此操作


现在,要使用恢复ID访问代码中的每个项目,可以使用alpha将视图的背景色设置为UIColor,而不影响视图。alpha:

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


view.backgroundColor=UIColor.red.withAlphaComponent(0.5)
设置视图的
alpha
属性会影响其子视图。如果只需要透明背景,请将视图的
backgroundColor
属性设置为alpha分量小于1的颜色

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

用Swift很简单。只要把这个颜色放在背景视图的颜色中,它就会工作

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

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


适用于Swift 4.x及以上版本

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

这对我有用


这可能对你有帮助。快乐编码:)

这个问题由来已久,但似乎有些人也有同样的担忧。

对于“UIColor的alpha属性和Interface Builder的不透明属性在代码中的应用不同”的观点,您有何看法


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

作为一个实际示例,Interface Builder的背景色为0x121212,不透明度值为80%(在Amani Elsade的图像中:红色: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)
    }
}
然而,实际的观点是错误的

  • “在界面生成器中指定背景色的视图”: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)

或者有人能告诉我我遗漏了什么吗?

如果我正确理解了这个问题,您希望它的
UIView
为半透明,而
UILabel
为不透明的白色背景。好的,
UILabel
s在默认情况下有一个完全透明的背景,因此如果您想要它有一个背景色,就必须将其背景色设置为白色。因此,您不需要中间的视图。此外,如果您使用脚本,您可以适当地设置脚本中的所有内容。我希望有一个带有白色背景色的半透明
UIView
,并且在其顶部有标签(如果在同一个视图中不起作用,则在新视图中)。所以它就像一个半透明的盒子,标签100%可见。我认为@Vitaliy下面的答案应该有效!这看起来像是我要找的。我会在周一回家的时候试试,然后告诉你!您需要使用alpha将父UIView背景色设置为UIColor:
endGameView.backgroundColor=UIColor(白色:1,alpha:0.5)
而不是您的UILabel完全符合我的要求我只使用UIView,如:`var label_view=UIView()',视图是以编程方式完成的,不使用故事板。谢谢你的提示!谢谢,这好像是下面@Vitaliy的答案。我也会试试这个,星期一告诉你!谢谢,请检查我的编辑!我已经尝试过你的解决方案,但它没有按我希望的方式工作!swift 3:
UIColor.white.withAlphaComponent(0.5)
这就是我所需要的,不影响视图的子视图。这非常理想,因为更改视图本身的alpha会逐渐影响其中的任何内容。
self.myFuncView.backgroundColor = UIColor(red: 17, green: 17, blue: 17, alpha: 0.8)