2

我正在尝试普遍更改表格视图的背景颜色。它是 UINavigationController 和 TabBarController 应用程序的组合。我尝试将以下内容放入 AppDelegate applicationDidFinishLaunchingWithOptions

[[[UITableView appearance] backgroundView] setBackgroundColor:[UIColor redColor]];
[[UITableView appearance] setBackgroundColor:[UIColor redColor]];
[[UITableView appearanceWhenContainedIn:[UINavigationController class], nil] setBackgroundColor:[UIColor greenColor]];
[[UITableView appearanceWhenContainedIn:[UITabBarController class], nil] setBackgroundColor:[UIColor greenColor]];

不用找了。

如果我尝试更改 AppDelegate 中的一般 UIView,则可以:

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

如果我在 viewDidLoad 中单独攻击每个 tableview,这有效:

self.tableView.backgroundColor = [UIColor redColor];

我意识到这只是一行代码,但有很多视图,这只是另一件事要跟踪。似乎 iOS 5 UIAppearance 就是为此而生的。我不清楚为什么它不起作用。谢谢。

4

3 回答 3

3

UIAppearance技术上不支持setBackgroundColor:,这就是为什么您没有看到所有表格视图颜色的变化。您最好的选择是子类化UITableView

如果您需要有关如何执行此操作的信息,请参阅此答案。

对于未来的观众,这里是一个答案链接,其中包含UIAppearance.

于 2013-05-25T15:55:56.997 回答
0
  • (BOOL)应用程序:(UIApplication *)应用程序 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[[UITableView 外观] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"xxxx.png"]]];

返回是;}

于 2013-11-25T03:29:32.040 回答
0

[UITableView backgroundColor] 选择器未用 UI_APPEARANCE_SELECTOR 标记。根据苹果文档

“为了支持外观定制,一个类必须符合 UIAppearanceContainer 协议,并且相关的访问器方法必须用 UI_APPEARANCE_SELECTOR 标记。”

UITableView backgroundColor 不应该与外观代理一起使用

于 2014-10-02T15:23:52.530 回答