我创建了一个简单的项目,其中包含一个UINavigationController、一个位于右侧的UIBarButtonItem和一个UITableView。为了测试,我想使用appearanceWhenContainedIn:方法将UINavigationController中的UIBarButtonItems颜色设为橙色,同时将UITableView中的UIButtons颜色设为红色。单独使用每个样式都可以正确地工作。但当我同时使用两者时,它不起作用。为什么呢?
场景1(在UINavigationController中给UIBarButtonItem上色):
场景1(在UINavigationController中给UIBarButtonItem上色):
[[UIBarButtonItem
appearanceWhenContainedIn:[UINavigationController class], nil]
setTintColor:[UIColor orangeColor]];
场景2(在UITableView中为UIButton上色):
[[UIButton
appearanceWhenContainedIn:[UITableView class], nil]
setTintColor:[UIColor redColor]];
Scenario 3 (Combine them):
[[UIButton
appearanceWhenContainedIn:[UITableView class], nil]
setTintColor:[UIColor redColor]];
[[UIBarButtonItem
appearanceWhenContainedIn:[UINavigationController class], nil]
setTintColor:[UIColor orangeColor]];
可通过此链接下载示例项目: https://www.dropbox.com/s/k7nabaqc9oso907/AppBugTesting.zip
更新: 在我继续诊断问题时,我发现如果我使用UIButton的"setBackgroundColor"将其设置为红色而不是setTintColor,它会显示红色背景和UIBarButtonItem的橙色tint。出于某种原因,同时着色两个元素无法工作......仍然不确定原因。