【问题标题】:Unchanged barTintColor UINavigationBar on iOS 13.4iOS 13.4 上未更改的 barTintColor UINavigationBar
【发布时间】:2020-07-05 21:46:57
【问题描述】:

在 iOS 13.4 上将 Xcode 升级到版本 11.4 (11E146) 后,barTintColor 只会在情节提要中发生变化。在代码中,更改被忽略。

self.navigationController.navigationBar.barTintColor = UIColor.redColor;

标题颜色也有问题。

已在 Xcode 11.4.1 中修复:

【问题讨论】:

  • 怎么样:navigationBar.backgroundColor。这对我有用
  • 我也有同样的问题。我正在尝试将背景颜色设置为清除。多年来,我一直使用barTintColor 编写代码来执行此操作,但现在它不适用于适用于 iOS 13 设备的 Xcode 11.4 中的新 SDK。 backgroundColor 也不起作用。
  • 我已经为此提交了一份雷达文件。你也应该这样做,所以他们可能会在下一次 Xcode 更新时修复它。
  • 我花了几个小时试图弄清楚这一点,认为这是我的代码中的一些东西。我更新到 Xcode 11.4,它甚至弄乱了我的一些导航栏。在导航栏导航时,状态栏也不会变为“浅色”。

标签: ios objective-c swift xcode xcode11.4


【解决方案1】:

我遇到了同样的问题,为我解决了这个问题:

在情节提要上,为您的导航控制器将“条形色调”更改为其“默认”值,然后在您的代码上像往常一样更改它。

    // For the navigation bar
    navigationController?.navigationBar.barTintColor = .red

    // For the title
    let attributes = [NSAttributedString.Key.foregroundColor: UIColor.white ]
    navigationController?.navigationBar.titleTextAttributes = attributes

我在 viewDidLoad() 中有代码

对我来说很奇怪,它还解决了我在使用“状态栏”时遇到的问题。

【讨论】:

  • 我写道它只从情节提要中改变。从代码中,无论情节提要中的值如何,都会忽略更改。
  • 是的,对我来说这就是解决方案。故事板上有不同的颜色,当我把它放回“默认”,然后在代码上设置我想要的颜色时,它工作得很好。我什至创建了一个“测试”项目来重新检查。当情节提要上有一个值时,它的行为就不会像预期的那样。
  • 嗯,昨天我尝试了各种选项,但没有任何效果,但今天成功了。如果 barTintColor 设置为默认值,则此方法有效。哦,苹果……
  • 太棒了!它确实解决了所有问题,包括状态栏颜色和导航栏标题颜色...谢谢! :)
  • 我正在使用 XCode 11.5 并且仍然遇到此问题。我使用的是 xib 文件而不是故事板,我该如何解决这个问题?
【解决方案2】:

这是对 Xcode 为 UINavigationBar 编码这些属性的方式所做的更改——它们现在使用 iOS 13 中引入的 UINavigationBarAppearance API。

如果您修改 UINavigationBar 的 standardAppearance 而不是使用旧的外观 API,您应该得到您正在寻找的修改。

【解决方案3】:

这是 Xcode 11.4 中的一个错误。修复是升级到 Xcode 11.4.1。

发行说明中特别提到了该修复:https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多