SwiftUI中用于watchOS的NavigationBarTitle颜色更改

12

enter image description here

在上面的图像中,我想将-02:49更改为颜色,例如Color.blue

我尝试过:

struct ContentView: View {

    var body: some View {
        PlayerView().accentColor(Color.blue)

    }
}

我还尝试将其添加到实际的PlayerView中,方法如下:

struct PlayerView: View {

    var body: some View {
        VStack{
            .... 

        }.navigationBarTitle(Text(“-2:49”))
         .accentColor(.blue)

    }

}

我也尝试过:

   struct PlayerView: View {

    var body: some View {
        VStack{
            .... 

        }.navigationBarTitle(Text(“-2:49”).foregroundColor(.blue))

    }

}
5个回答

21

在使用 SwiftUI App 生命周期的 WatchOS7/Xcode12 中,你将不再需要一个故事板。

现在,你可以通过应用资源中的 AccentColor 来进行更改。

Xcode12 Accent Color


11

目前在SwiftUI中没有直接的API可以改变navigationBarTitle的颜色。

但你可以像这样更改它:
1)进入AppName WatchKit App中的Interface.storyboard文件。
2)选择Hosting Controller Scene,进入File Inspector并将Global Tint更改为您自定义的颜色。


5
如果有人想要更改WatchOS中导航栏标题的颜色,以下是代码。
.navigationTitle {    
  Text("Header").foregroundColor(.blue) 
}

0
修改文本颜色的修饰符是 .foregroundColor(),因此您应该编写如下内容:
Text(“-2:49”).foregroundColor(.blue)

强调颜色是在UIKit中被称为色调颜色,即可点击项目的颜色。ForegroundColor用于非可点击项目,以赋予它们一定的颜色。


还有一个叫做.colorMultiply(.blue)的修饰符,它并不完全符合你的要求,但可能会起到作用。 - LuLuGaGa
我尝试过了。问题在于NavigationBarTittle需要一些StringProtocol类型的东西,并且使用colorMultiply会将TextView更改为“some View”,因此我收到错误提示:参数类型“some View”不符合预期的类型“StringProtocol” - 39fredy
是的,colorMultiply 是视图上的修饰符。这可能意味着您不能真正修改太多内容。一个可能有效的方法是仅将栏倒置为从右到左,并且没有标题,然后将您的文本插入为一个不执行任何操作的按钮。它会默认具有色调颜色。 - LuLuGaGa
这个视频中,您可以清楚地看到他们能够改变颜色。 - 39fredy
是的,但我们无法看到他们从哪里更改navigationBarTitle颜色。 - Anjali Kevadiya
显示剩余2条评论

0

@CodeChimp的回答是正确的,但并不完美。如果你正在从旧项目更新到SwiftUI,你还需要像这样在你的目标中设置资产目录编译器;

enter image description here

如果您没有任何界面,这意味着您完全采用SwiftUI。 对于这种情况,您需要选择"WatchKit Extension"目标并进行更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接