在 xib 中带有 alpha 的 UIView 背景颜色

Posted

技术标签:

【中文标题】在 xib 中带有 alpha 的 UIView 背景颜色【英文标题】:UIView background color with alpha in xib 【发布时间】:2015-03-04 19:53:26 【问题描述】:

我有问题。我正在尝试使用位于中心的图像制作我的自定义 UIView。该图像之外的部分必须是透明和灰色的。 在 xib 的“视图”中,我设置了这个:

结果 - 失败。图像之外的区域只是灰色的,而不是透明的。 但是如果我添加

-(void) viewDidLoad

  self.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5f];

然后一切都按预期进行。 尝试在 xib 中实现透明背景时我做错了什么?

更新: 我找到了呈现视图的代码,其中设置了 alpha。所以我想这就是问题所在。谢谢。对不起,我是新手

【问题讨论】:

您确定它不起作用吗?也许 alpha 为 0.75 的浅灰色并没有那么大的视觉效果。就像你在代码中所做的那样尝试:带有 0.5 alpha 的黑色 【参考方案1】:

也许这就是你所期望的。您只能更改背景颜色而不是视图的 alpha。只需将opacity 设置为背景颜色即可。

【讨论】:

太棒了!这提供了设置 UIView 背景透明和不透明继承!【参考方案2】:

在设置父 UIView 的 alpha 时,alpha 值将传递给子视图,为所有子视图提供相同的 alpha。如果将 UIView 的 alpha 值设置为 1,则设置的是视图的 alpha,而不是颜色。

也就是说,您可以设置背景颜色的 alpha。执行此操作时,视图将保持其自己的 alpha 值,而背景颜色具有自己的 alpha 值。希望这会有所帮助

【讨论】:

【参考方案3】:

问题在于自定义显示方法。它没有使用 presentViewController:animated:completion: 方法。它使用从 0 到 1 的 alpha 动画。第二个 - 当使用标准 presentViewController:animated:completion: 方法时可可优化隐藏了底层视图,所以我需要设置(对于 ios 8) p>

vc_to_present_on.modalPresentationStyle = UIModalPresentationCurrentContext;
vc_to_be_presented.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

然后一切都按预期工作

【讨论】:

以上是关于在 xib 中带有 alpha 的 UIView 背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cardboard 在 Unity 3D 中带有 alpha 的 Skybox

Swift 中带有 CollectionView 和 TableView 的 UIView

swift - 在UIScrollView上从xib添加UIView后如何更新约束?

从 xib 加载子类时如何设置子类 UIView 属性的值

使用一个 xib 在加载时加载正确的方向 UIView 问题

在 .xib 中使用自定义 UIView 作为 IBOutlet