设置 UIVIew 的背景颜色

Posted

技术标签:

【中文标题】设置 UIVIew 的背景颜色【英文标题】:Setting the background color of a UIVIew 【发布时间】:2011-09-26 23:38:36 【问题描述】:

编辑:人们一直在访问这个没有太多有用信息的帖子,所以我把它放在这里来帮助你们: 尝试设置UIViewbackgroundColor 属性。例如:

myView.backgroundColor = [UIColor blueColor];

确保您的视图已被实例化,并且如果它完全由 xib 或情节提要控制,请确保该视图已被加载(否则界面生成器中设置的任何内容都将成为背景颜色)。如果这不起作用,就会发生一些奇怪的事情。继续看,这篇文章对你没有帮助。

原帖:

我有一个带有 UIView 属性的 NSObject。大多数情况下,我使用这个 UIView 来显示图片,但在某些情况下,我想设置它的背景颜色。但是,每次我尝试设置背景颜色时,颜色都保持清晰。出现任何图像或其他子视图,但背景不出现。如何更改 UIView 的背景颜色?这是我的一些代码:

这是一个我需要平铺图像的示例: (这是在我将 UIView 添加到视图控制器的视图后调用的函数中)

(图片是一个 UIView 属性)

 picture.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Tile.png"]];

其他情况我也试过:

picture.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:0.5];

在这两种情况下,背景都保持清晰。

【问题讨论】:

它仍然解决了我正在寻找的东西,设置背景:) 【参考方案1】:

你是在分配和初始化上面提到的 UIView 吗?问题应该是你很可能忘记对名为图片的 UIView 执行此操作。

试试吧:

picture = [[UIView alloc] initWithFrame:CGRectMake(10,10,200,200)];
picture.backgroundColor = [UIColor redColor];

假设该图片已在您的界面文件中声明为 UIView 类型的 iVar。

【讨论】:

谢谢,但它已分配在此之前调用的函数中。【参考方案2】:

如果你擅长使用RGB值,你可以使用

picture.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1];

否则使用 UIColor 设置背景颜色

picture.backgroundColor = [UIColor greenColor];

【讨论】:

我更多的是想像 [UIColor colorWithPatternImage:[UIImage imageNamed:@"Rope.png"]];但我开始更简单地尝试消除问题的可能因素。 如果你要使用 colorWithPatternImage: 你可能会发现泄漏。【参考方案3】:

alpha 的有效范围为 0.0 到 1.0。您已将其设置为 50,请尝试改为 1:

picture.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1];

【讨论】:

Alpha 版没有问题。这不是导致问题的原因。只需将其设置为 OP 指定的内容,它就会呈现浅蓝色。 我的意思是 0.5 而不是 50。另外,设置 50 不会导致它崩溃,它的工作方式与你给它 1 一样。 @Wolflink 你的问题并没有说它崩溃了。如果您遇到异常,您应该这么说。【参考方案4】:

我不确定问题是什么,虽然我知道这不是您回答的问题之一,但上次我去解决这个问题时,我注意到它正在工作。无论如何感谢您的帮助。

【讨论】:

【参考方案5】:

可能值得检查您是否正在更改主线程上的背景颜色。如果您更改调度队列(除了主队列)中的背景颜色,它有时无法反映在 UI 外观中。

【讨论】:

【参考方案6】:

可以使用属性检查器来改变颜色。选择“背景”的颜色。

【讨论】:

【参考方案7】:

您的代码似乎完全有效,它应该改变背景颜色。您可能需要仔细检查 picture.opaque 属性是否设置为 YES(这是默认值,除非您的代码更改它)。但更可能的问题是视图的框架大小为零。我会建议验证这一点。例如,通过记录它:

    NSLog(@"Frame size: width=%f, height=%f", picture.frame.size.width, picture.frame.size.height);

干杯

【讨论】:

以上是关于设置 UIVIew 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

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

仅为部分 UIView 设置背景颜色

Swift - 设置UIView的背景色和背景图片

从 UIViewController 设置 UIView 的背景颜色

设置 UIVIew 的背景颜色

无法设置 UIView 的背景颜色 Swift 5