iPhone 子视图可以透明吗?

Posted

技术标签:

【中文标题】iPhone 子视图可以透明吗?【英文标题】:iPhone Can subview be transparent? 【发布时间】:2012-03-12 15:33:51 【问题描述】:

我有主视图,并在其中添加了子视图。我将子视图的背景设置为半透明,但子视图以纯色绘制。我什至尝试将 opaque 设置为 NO。

detailsView.opaque = NO;
detailsView.backgroundColor = UIColorMakeRGBA(0, 0, 100, 100);

我可以通过 alpha 属性使 vsu​​bview 透明(但子视图上的所有东西也都是透明的),但我真的只想将背景颜色设置为半透明。

【问题讨论】:

UIColorMakeRGBA 是你定义的函数吗?如果是,您可以发布它的代码或确认它看起来像我的答案中的代码吗? 是的,它是用户定义的函数,你不是我的……问题是我认为 alpha 也被 255 分割。 【参考方案1】:

alpha 设置为colorWithRed:green:blue:alpha method 中的所需值

detailsView.backgroundColor = [UIColor colorWithRed:0/255.0f 
                                              green:30/255.0f 
                                               blue:160/255.0f 
                                              alpha:0.5f];

【讨论】:

【参考方案2】:

我不知道 UIColorMakeRGBA 函数,但在我看来,您正在创建 alpha 为 1 的完全蓝色,因此它不应该是透明的。尝试将背景颜色线设置为

detailsView.backgroundColor = UIColorMakeRGBA(0, 0, 100, 50);

或者只使用[[UIColor blueColor] colorWithAlphaComponent:0.5f];

【讨论】:

【参考方案3】:

我假设UIColorMakeRGBA 是您已经实现的功能。在这种情况下,我敢肯定,它看起来像这样:

#define UIColorMakeRGBA(redValue, greenValue, blueValue, alphaValue) [UIColor colorWithRed:(redValue)/255.0f green:(greenValue)/255.0f blue:(blueValue)/255.0f alpha:(alphaValue)]

请注意,alpha 不会除以255.0,因此您应该为该参数使用介于0.01.0 之间的值,而不是100。如果你使用 100,你最终会得到一个 alpha 等于1.0 的颜色。

detailsView.backgroundColor = UIColorMakeRGBA(0, 0, 100, 0.5f);

【讨论】:

以上是关于iPhone 子视图可以透明吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥不透明视图在 iPhone 上更有效?

iPhone:如何在捏缩放uiscrollview时重绘子视图

iPhone:如何制作透明的 XIB,从中我们可以看到以前视图的 uitableview

在 iPhone 上处理多次触摸

在 iPhone 中显示透明视图

iPhone目标C中错误的半透明视图