iPhone - UIView 的背景颜色 - 使用具有透明度的 png?

Posted

技术标签:

【中文标题】iPhone - UIView 的背景颜色 - 使用具有透明度的 png?【英文标题】:iPhone - UIView's backgroundColor - using a png with transparency? 【发布时间】:2011-05-02 20:23:12 【问题描述】:

我正在设置我的 UIView(在 UIViewController 中)的背景颜色,如下所示:

myView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myTransparentBG.png"]];

我什至尝试过使用[myView setOpaque:NO];,但图像看起来不透明。它有一个黑色的背景。我可以以编程方式解决这个问题吗?否则,我们应该如何为我们的视图设置透明背景?

这似乎是一个以前应该问过的问题,但我找不到答案。

【问题讨论】:

【参考方案1】:

当使用透明图案时,设置 backgroundColor 属性后,需要在视图及其图层上将opaque 属性设置为NO。这是一个示例:

UIView* paperView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,700)];
paperView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"paper.png"]];

[paperView.layer setOpaque:NO];
paperView.opaque = NO;

【讨论】:

啊哈,这是正确答案。我没有设置图层的 opaque 属性。谢谢! 有趣的是,您必须在设置背景图像之后设置 opaque 属性。必须是渲染引擎的一部分。 谢谢山姆,我遇到了同样的问题。另外:这段代码的最后两行 sn-p 做同样的事情。 非常感谢...我一直在寻找这个。再次感谢。 对我来说最好的答案之一。【参考方案2】:

我实际上从未这样做过,但这是我会尝试的。

将 UIView 的 .backgroundColor 设置为 [UIColor clearColor]。然后将包含您的 PNG 的 UIImageView 作为 UIView 的子视图堆栈中的“最低”项。确保 UIImageView 的背景颜色也清晰。

【讨论】:

实际上,保留 UIView 的理由并不多,我最终只使用了 UIImageView,然后将所有其他元素添加为它的子视图,效果非常好。跨度> @RyanJM 哦,是的。我有时会忘记,作为 UIView 子视图,UIImageView 可以愉快地持有子视图...【参考方案3】:

使用这个:myView.backgroundColor = [UIColor clearColor];

这会将其设置为透明背景。

【讨论】:

在上面吗?我希望图像成为背景。我在视图中有其他 UI 元素。 如果你将 UIView 颜色设置为 clearColor,那么它将是透明的。根据图像和其他视图的排序位置,您可以随意使用它们。

以上是关于iPhone - UIView 的背景颜色 - 使用具有透明度的 png?的主要内容,如果未能解决你的问题,请参考以下文章

设置 UIView 的背景颜色会增加内存使用量

如何使 UIView 透明

UIView 没有出现在 xib 上

使 UIView 透明

iPhone X 的 UIView 高度没有扩展

UIView 背景颜色比 UICollectionView 背景颜色深