使用 UIAppearence 更改 UIViewController 的直接子视图的背景颜色

Posted

技术标签:

【中文标题】使用 UIAppearence 更改 UIViewController 的直接子视图的背景颜色【英文标题】:Change the background color of immediate subview of UIViewController using UIAppearence 【发布时间】:2013-12-01 05:28:50 【问题描述】:

我想更改所有UIViewController 视图的背景颜色。我的项目中有几个UIViewController 类,我想使用UIAppearence 为所有视图设置相同的背景。

我尝试了以下代码:

[[UIView appearance] setBackgroundColor:
    [UIColor colorWithPatternImage:[UIImage imageNamed:@"BackgroundImage"]]];

但它会改变每个 UIView 的背景颜色,包括(UIButtonUIView 子类和UILabels 等)

有什么办法可以处理这种情况,让我只能更改UIViewController视图的背景颜色?我谷歌了很多,但我没有找到任何相关的解决方案。

任何帮助将不胜感激。

谢谢..

【问题讨论】:

您是否只想影响视图控制器的根视图 (self.view)?这并不是真正的情况。您可以调配-[UIViewController setView:] 或制作自己的基类。 我想对所有 UIViewController 类都这样做。 【参考方案1】:

我认为最好的方法是继承 UIViewController 并在 viewDidLoad 中设置背景颜色。但是如果你想使用 UIAppearance 你可以这样做:

id proxy = [UIView appearanceWhenContainedIn:[UIViewController class],nil];
[proxy setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"BackgroundImage"]]

【讨论】:

您的代码不起作用。我收到错误:“使用未声明的标识符 'UIAppearance'”。 在我的回答开始时我说过我会做什么,那就是子类 UIViewController 或 UIView 来改变背景颜色。我对你的问题回答得太快了,基本上你试图做的事情是通过 UIAppearance 是不可能的。 非常感谢您的努力。

以上是关于使用 UIAppearence 更改 UIViewController 的直接子视图的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIAppearence 设置 UITableViewCell 选择的背景颜色不起作用

UIAppearence 仅适用于 iOS 中的系统颜色?

使用 UIAppearence 代理设置字体无处不在

分离 UIAppearence 代码

使用动画更改 UIView 背景颜色

从 viewController 更改 UIColor 以在 UIView 类中使用