xib 中带有 alpha 的 UIView 背景颜色

UIView background color with alpha in xib

我有问题。我正在尝试制作我的自定义 UIView,并在正中心放置一个图像。该图像之外的部分必须是透明和灰色的。 在 "View" 的 xib 中,我设置了这个:

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

-(void) viewDidLoad
{
  self.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5f];
}

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

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

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

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

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

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

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

然后一切都按预期进行