gpt4 book ai didi

ios - 在 Swift 中更改导航栏的颜色

转载 作者:行者123 更新时间:2023-11-29 01:45:47 34 4
gpt4 key购买 nike

我的 ViewController 中有一个 MKMap,我允许我的用户在“标准”、“混合”和“卫星”之间切换 map 类型 - 就像在 map 应用程序中一样。就像在 map 应用程序中一样,我有一个底栏,然后在顶部有一个导航栏。当用户在 map 类型之间切换时,“混合”和“卫星”栏应更改为黑色背景和白色按钮,“标准”栏应更改为白色背景和蓝色按钮。

我的底部栏可以正确更改颜色,但根本无法更改导航栏。这是我在用户更改 map 类型时的功能:

func changeMapType(sender:UISegmentedControl){
if mapType.selectedSegmentIndex == 0{
mapView.mapType = MKMapType.Standard
toolbar.barTintColor = UIColor(red:1.0, green:1.0, blue:1.0, alpha:1.0)
toolbar.tintColor = UIColor(red:0.0, green:122.0/255.0, blue:1.0, alpha:1.0)
self.navigationController?.navigationBar.translucent = false
self.navigationController?.navigationBar.barTintColor = UIColor(red:1.0, green:1.0, blue:1.0, alpha:1.0)
self.navigationController?.navigationBar.tintColor = UIColor(red:0.0, green:122.0/255.0, blue:1.0, alpha:1.0)

defaults.setValue("Standard", forKey: "initialMapType")
}
else if mapType.selectedSegmentIndex == 1{
mapView.mapType = MKMapType.Hybrid
toolbar.barTintColor = UIColor.blackColor()
toolbar.tintColor = UIColor.whiteColor()
self.navigationController?.navigationBar.translucent = false
self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

defaults.setValue("Hybrid", forKey: "initialMapType")

}
else if mapType.selectedSegmentIndex == 2{
mapView.mapType = MKMapType.Satellite
toolbar.barTintColor = UIColor.blackColor()
toolbar.tintColor = UIColor.whiteColor()
self.navigationController?.navigationBar.translucent = false
self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

defaults.setValue("Satellite", forKey: "initialMapType")
}

有谁知道我必须做些什么才能让我的导航栏改变颜色?

最佳答案

这很可能是因为你的 self.navigationController 是空的。先试试看!这是非常普遍的问题。也许您是从实际上没有 NC 的错误 View Controller 调用它的。您可以使用 .appearance() 接口(interface)解决该问题,如下所示:

要更改栏色调颜色(导航栏的背景):

UINavigationBar.appearance().barTintColor = UIColor.whiteColor()

改变文本的颜色:

UINavigationBar.appearance().titleTextAttributes = [UITextAttributeTextColor: UIColor.whiteColor()]

请注意,这会更改整个应用程序的导航栏(基本上,外观是更改默认设置的方式),因此它可能不合适。有兴趣的可以在这里read more about appearance .

希望对您有所帮助!

编辑:检查空导航 Controller 的简单方法是强制展开变量 self.navigationController!.navigationBar 而不是 ?,如果您的应用程序崩溃,您的问题就出在这里(但不要告诉任何人我建议,因为它不是很灵活的解决方案如何找到问题,虽然很快)

关于ios - 在 Swift 中更改导航栏的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31944833/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com