设置UIView的背景颜色

10

编辑:人们不断访问这篇没有太多好信息的帖子,所以我在这里提供一些帮助: 尝试设置你的UIViewbackgroundColor属性。例如:

myView.backgroundColor = [UIColor blueColor];
确保你的视图已经被实例化,如果它由xib或storyboard控制,请确保视图已经被加载(否则interface builder中设置的内容将成为背景颜色)。 如果这不起作用,可能发生了一些奇怪的事情。 继续查看,本帖子无法帮助您。
我有一个NSObject对象,其中包含一个UIView属性。 主要用于显示图片,但在某些情况下,我想设置其背景颜色。 但是,每次我尝试设置背景颜色时,颜色都保持清晰。 任何图像或其他子视图都可以显示,但背景却不行。 如何更改UIView的背景颜色? 这里是我的一些代码:
以下是需要平铺图像的示例: (这在将UIView添加到视图控制器的视图后调用的函数中)
(picture是一个UIView Property)
 picture.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Tile.png"]];

我也尝试过其他情况:

picture.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:0.5];
在这两种情况下,背景都保持清晰。

它仍然解决了我正在寻找的问题,设置背景 :) - Rasmus Christensen
7个回答

9

你是否已经分配并初始化了上述提到的UIView?问题很可能是你忘记为名为picture的UIView进行初始化了。

尝试一下:

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

假设在您的接口文件中,picture已经被声明为UIView类型的iVar。

谢谢,但它已经在调用这个函数之前被分配了。 - WolfLink

3

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

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

否则使用 UIColor 来设置背景颜色。
picture.backgroundColor = [UIColor greenColor];

我更倾向于像[UIColor colorWithPatternImage:[UIImage imageNamed:@"Rope.png"]]; 这样的方法,但为了尝试排除可能导致问题的因素,我会从简单的开始。 - WolfLink
如果你要使用colorWithPatternImage:,你可能会发现泄漏问题。 - Anand

2

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

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

没有alpha的问题。那不是引起问题的原因。只需将其设置为OP指定的内容,它就会给出淡蓝色。 - Bourne
我是说0.5而不是50。此外,输入50不会导致崩溃,它将像输入1一样工作。 - WolfLink
@Wolflink,你的问题没有提到它崩溃了。如果你得到了一个异常,你应该说一下。 - progrmr

0

值得注意的是,您可能需要检查一下是否在主线程上更改了背景颜色。如果您在调度队列(除了主队列)中更改背景颜色,则有时可能不会反映在UI外观中。


0

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


0

我不确定问题出在哪里,虽然我知道它不是你已经回答过的问题之一,但上次我去解决这个问题时,我注意到它正在工作。无论如何,还是谢谢你的帮助。


-1

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

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

干杯


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接