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?的主要内容,如果未能解决你的问题,请参考以下文章