UIView clearColor 的问题

Posted

技术标签:

【中文标题】UIView clearColor 的问题【英文标题】:Problems with UIView clearColor 【发布时间】:2013-03-29 17:59:35 【问题描述】:

我正在为 ios 构建一个框架。工作方式是说一个应用程序使用我的框架并调用它来工作。该框架在调用应用程序的顶部呈现了一个视图控制器。

现在我卡住的地方是我已将视图的背景颜色设置为clearColor。但是每当框架的视图控制器加载时,背景就会设置为黑色。如果我尝试将颜色设置为红色、蓝色等,效果非常好。但是当我将其设置为clearColor 时,它会显示黑屏!

我看到了一些关于同一问题的问题,但所有问题都建议将视图的透明度设置为“否”。我已经这样做了,但它不起作用。因此,请提出一种解决方案,而不是需要您设置 opaque 属性的解决方案。

谢谢。

【问题讨论】:

请显示一些代码。在您尝试设置的背景的“背后”可能有一个视图。并且背景中的视图可能是黑色的。 您可以尝试添加IBOutlet 并将背景设置为nil。像这样:tableViewBackground.backgroundView = nil; 这将放在-(void)viewDidLoad 那个viewController是模态的吗? 使用 [[self delegate] presentViewController:vc animated:YES completion:^] 调用它; 对,这是模态的,它将阻止任何类型的透明度。按照@ChrisWagner 给出的提示,这就是完成效果的方法。 【参考方案1】:

问题是,如果背景为clearColor的view是唯一的view,那么屏幕会变黑,因为view下面没有东西就看不清楚了。要使用颜色清晰的视图,它下面必须有一个视图。

【讨论】:

是的。它下面的视图有一些背景颜色。【参考方案2】:

您不想呈现视图控制器,而是想要将视图控制器的视图作为子视图添加到当前呈现的视图控制器中。

也就是说,如果我对您的理解正确,听起来您想创建一个叠加层。

【讨论】:

是的,我需要添加更多的叠加层。你的观点听起来不错。应工作并检查。当它工作时,我会在你的答案上打勾。谢谢@Chris Wagner 另一种方法是创建一个新的 UIWindow,这取决于您要做什么来更好地为您工作。【参考方案3】:

在为自定义 UIView 从 initWithFrame: 中设置 clearColor 时遇到同样的问题。让超级视图将背景颜色设置为clearColor 有效。

CustomView *uv = [[CustiomView alloc] initWithFrame:rect];
uv.backgroundColor = [UIColor clearColor];
[self.view addSubview:cv];

【讨论】:

以上是关于UIView clearColor 的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UIView 透明

使用 CoreGraphics 绘制自定义 UIView

创建阴影视图

UIScrollView - 无法查看所有 UIView

UIView 子视图没有动画

如何创建径向 UIView?