使用 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 的背景颜色,包括(UIButton
、UIView
子类和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 的直接子视图的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章