如何为UIView创建半透明背景?

15

我正在创建一个包含一些文本并部分覆盖UIImageView的UIView。我希望用户能够阅读文本并仍然保持对下面图像的视角。我尝试将背景颜色设置为[UIColor clearColor],但是背景完全透明,根据图像颜色很难阅读文本。

如果我降低view.alpha = 0.5,整个视图(包括文本)都是部分透明的。我想要的是保留文本并部分减少背景透明度,使图片透过来显示。

8个回答

39

选项1 - 使用故事板

对于那些在故事板或 .xib 中拥有视图的人,您只需在界面构建器中选择“清除颜色”选项来为视图的背景设置透明背景(位于右侧的实用程序窗格中)。 “Clear Color” 将为视图提供完全透明的背景。

See screenshot

如果您需要部分透明的背景颜色,请使用颜色选择器选择所需的背景颜色,并使用底部的不透明度滑块设置透明度。

opacity slider to arrange transparency of the background colour of your view


选项2 - 使用颜色资源(和故事板)

另一个非常有用的选项是将颜色添加到您的 .xcassets 库中,以便您可以轻松地在不同的视图中使用相同的颜色。 您还可以使这些颜色(半)透明,下面是如何操作:

  1. 打开您的 .xcassets
  2. 添加一个 Color Set

Add a Color Set to your xcassets library

  1. 给它一个有用的名称并选择颜色缩略图

Give it a useful name and select the color thumbnail you'd like to adjust/create

  1. Attributes Inspector 中,您可以更改颜色并使用滑块调整其不透明度

创建颜色并使用透明度滑块调整其透明度

  1. 回到故事板并选择需要此透明背景颜色的视图
  2. 属性检查器 中的 背景 选项中,您现在可以选择添加到 .xcassets 库中的颜色。如果您的应用程序中有多个视图使用相同的背景,则这非常有用。

现在您可以在故事板中选择刚创建的颜色

在代码中,您可以使用以下方式访问 Color Assets 中的颜色:

SWIFT (UIColor): UIColor(named: "DP Textfield")

SWIFTUI (Color): Color("DP Textfield")


31

我认为你的意思是想让UIView的背景色半透明? 如果你想要白色/透明,请使用以下代码:

myView.backgroundColor = [UIColor colorWithWhite:myWhiteFloat alpha:myAlphaFloat];

如果你希望它是另一种颜色,可以使用通用的UIColor方法:+colorWithRed:green:blue:alpha:


我尝试了以下代码 "self.summaryViewController.view.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.2];",但是没有任何效果。summaryViewController.view 中有许多子视图,这会产生影响吗? - ChrisP
我已经解决了。有趣的是,我必须将命令添加到summaryViewController的viewDidLoad中,而不是它的父视图控制器中。 - ChrisP

7

这个会起作用。

myView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7f];

5
最终,您已经有了一个颜色,因此可以像这样使用.colorWithAlphaComponent:
let exampleColor = UIColor.blackColor()
overlayView.backgroundColor = exampleColor.colorWithAlphaComponent(0.8)

1

对于Swift 4+:

黑色半透明视图:

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

0

Swift 3+

半透明的白色:

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

或者是黑色半透明的:

        view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)

0

我认为你应该使用:

myView.alpha = myAlphaFloat;
myView.opaque = NO;

1
这将设置整个视图及其内容。Jesse的答案设置了背景颜色。 - grigb
不,这不是问题提问者所说他不想做的事情,因为他试图使文本100%不透明 - 只希望背景颜色半透明。 - ToolmakerSteve

0

对于Xamarin C#,目前的视觉故事板没有Xcode故事板中的“不透明度”滑块由Bocaxica提到

如果您在故事板中为视图nameOfView设置了BackgroundColor,那么在您的视图控制器的ViewDidLoad中,添加此行以设置alpha:

nameOfView.BackgroundColor = nameOfView.BackgroundColor.ColorWithAlpha( 0.7f );  // A value between 0 and 1.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接