2

我有一个使用 6.1 SDK 编译的 iOS 应用程序,其中包含一些 UIBarButtonItems,其中 TintColor 在 ViewWillAppear 中以编程方式设置。

UIBarButtonItem leftButton = new UIBarButtonItem(...);
leftButton.TintColor = UIColor.FromRGB(231, 231, 231);

导致了这个。

6.1 上的自定义 UIBarButtonItem TintColor

我已将我的 iPhone 升级到 7.0,但我仍然需要为 6.1 SDK 构建以实现向后设备兼容性(商业原因)。

当我使用 6.1 SDK 构建应用程序并在运行 iOS 7.0 的 iPhone 上运行它时,工具栏看起来像这样。

7.0 上的自定义 UIBarButtonItem TintColor

通读 iOS 7 UI 过渡指南后,我尝试设置 UIWindow 的 TintColor 以查看这是否有效果。它没。

有趣的是 - 在这个表单上,当我显示一个 ActionSheet 时,在 ActionSheet 被关闭后,取消和保存按钮的背景从“黑色”变为“白色”。我目前正在调查为什么会发生这种情况。

如果我不能在 iOS 7.0 下以编程方式更改 TintColor,我正在考虑为按钮创建自定义背景图像,就像这样。

灰色按钮

并使用 SetBackgroundImage 覆盖现有背景。

提前致谢。

更新 - 09.24.13

poupou 的回答将我指向 WWDC 视频(链接),它在 8:37 为我提供了解决方案 - 我需要设置导航栏的 TintColor 而不是设置特定按钮的 TintColor。

NavigationBar.TintColor = UIColor.FromRGB(231, 231, 231);
4

1 回答 1

1

我尝试设置 UIWindow 的 TintColor 以查看这是否有效果。它没。

它应该 - 但如果您在TintColor其他一些 UI 元素上进行设置,那么它将优先于 main 上的设置UIWindow

WWDC 2013 (session 214) 有一个完整的会议,TintColor关于它在 iOS7 中的工作原理以及它在 iOS7 中的工作方式(这是带有井字游戏示例的那个)。

如果您需要运行/排除某些特定于 iOS 版本的代码,您可以执行以下操作:

if (UIDevice.CurrentDevice.CheckSystemVersion (7,0)) {
    // iOS 7.0 and later
} else {
    // iOS 6.1 and earlier
}
于 2013-09-24T00:36:52.733 回答