iOS设置所有视图控制器self.view的背景颜色

18
有没有一种方法可以为所有视图设置相同的背景图像?
在所有的viewDidLoad: 方法中设置相同的背景不太好。

这只是一行代码,只需要复制粘贴。你有多少次浏览? - woz
循环遍历所有子视图并应用背景色是我能想到的唯一方法。 - chrislhardin
你确定不想将它们的背景颜色设置为透明,并在容器视图中一次性设置颜色吗? - nonopolarity
现在你有一些选择。如果你不满意,可以创建一个带有红色背景的抽象子类,并让所有的vcs都继承自该对象。 - Martol1ni
4个回答

11

你可以创建一个自定义类,我们称之为TemplateView,它是UIView的子类。然后使用xib/storyboard选择控制器视图并在“identity inspector”中将“Class属性”更改为“TemplateView”。

随后,使用UIAppearance将模板视图的背景颜色更改为所需颜色。

 [[TemplateView appearance]setBackgroundColor:[UIColor blueColor]];

这将改变您项目中每个模板视图的背景颜色。我认为这比之前的解决方案更好。

[[UIView appearance] setBackgroundColor:[UIColor redColor]];

因为我们不改变所有元素的背景,只改变我们自定义类的背景。希望这能有所帮助。


2
这个答案比被采纳的答案要好得多。给所有的 UIView 添加背景会产生许多意想不到的副作用。 - Stijn

2

是的,可以在iOS5+上使用UIAppearance

[[UIView appearance] setBackgroundColor:[UIColor redColor]];

注意: UIView 符合 <UIAppearance, UIAppearanceContainer> 协议,但由于某些原因没有将任何属性标记为 UI_APPEARANCE_SELECTOR


19
没错,但这将为所有继承 UIView 的子视图(几乎包括所有按钮、标签等)设定背景。 - jimpic

0

我不认为这是一个好主意,但如果你真的想做这个,你可以这样做:

- (void)setBGColor:(UIColor *)color forAllSubviewsOf:(UIView *)view
{
    [view setBackgroundColor:color];
    for (UIView *sub in view.subviews)
        [self setBGColor:color forAllSubviewsOf:sub];
}

0

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