如何更改 iOS8 中 displayModeButtonItem 返回的按钮的文本颜色?

How do I change the text color of the button returned by displayModeButtonItem in iOS 8?

在 iOS8 中,我使用 splitViewController 来呈现我的数据。我有一个导航栏的自定义颜色(浅蓝色),我将标题的颜色设置为白色。我也想将 displayModeButtonItem 中的文本颜色更改为白色,但无论我做什么,它在 iPhone 上显示时都保持默认蓝色。在 iPad 上显示时为白色。

我试过了

    self.navigationItem.leftBarButtonItem = [self.splitViewController displayModeButtonItem];

self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];

但这没有任何作用。似乎因为这个按钮是由 iOS 自动处理的,所以我做任何事情都无法改变它。有什么地方可以拦截这个按钮并设置它的颜色吗?

这很难找到。在 Interface Builder 中,您需要:

  1. 找到主视图控制器的导航控制器。
  2. Select导航栏
  3. 更改色调

如果您不能使用已接受的答案,因为您的主视图中没有导航控制器(我没有),您可以尝试以下操作:

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

如果将它放在 App Delegate 中,它会使每个 UIBarButtonItem 变为白色(包括 displayModeButtonItem),但您可以将其定位为更具体到 SplitViewController 的 displayModeButtonItem。

Objective c

在SceneDelegate.m

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {


UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
splitViewController.view.tintColor = [UIColor blackColor];

}