设置 UIVIew 的背景颜色
Posted
技术标签:
【中文标题】设置 UIVIew 的背景颜色【英文标题】:Setting the background color of a UIVIew 【发布时间】:2011-09-26 23:38:36 【问题描述】:编辑:人们一直在访问这个没有太多有用信息的帖子,所以我把它放在这里来帮助你们:
尝试设置UIView
的backgroundColor
属性。例如:
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 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章