带有 SwiftUI 的 Apple Watch 上列表项的背景 [重复]

Posted

技术标签:

【中文标题】带有 SwiftUI 的 Apple Watch 上列表项的背景 [重复]【英文标题】:Background for List Items on Apple Watch with SwiftUI [duplicate] 【发布时间】:2020-01-01 00:17:24 【问题描述】:

我正致力于在 SwiftUI 中构建 Apple Watch 屏幕。布局运行良好,但我似乎无法弄清楚颜色样式的某些方面。这是我的代码:

struct Watch3ThingsMainUI: View 
    var goals: [Goal]

    var body: some View 

        VStack 
            Text("3things")
                .foregroundColor(Color("3thingsBlue"))

            List(goals)  goal in
                HStack 
                    Text(goal.name)

                    Spacer()

                    Image(systemName: "gear")
                
                .background(Color.blue)
            
            .background(Color.green)
            .foregroundColor(Color.red)
            .accentColor(Color.yellow)
        
    

下面是它如何渲染的截图:

您会注意到 HStack 的蓝色背景仅覆盖一个矩形区域,而不是 List 似乎自动创建的整个按钮。奇怪的是,虽然 List 支持背景修饰符,但它似乎被忽略了——没有任何东西是绿色的。

我想做的是确定整个按钮的背景,但我想不出办法——无论我尝试什么恶作剧,HStack 周围都是顽固的深灰色.

【问题讨论】:

你可能会发现我在这篇文章中的回答很有帮助How do you fill entire Button area with background View in WatchOS? 这能回答你的问题吗? How to style rows in SwiftUI List on WatchOS? 【参考方案1】:

尝试用可以使整个按钮变成蓝色的身体来代替你的身体

var body: some View 

    VStack 
        Text("3things")
            .foregroundColor(Color("3thingsBlue"))
        List 
            ForEach(self.goals)  goal in
                HStack 
                    Text(goal.name)
                    Spacer()
                    Image(systemName: "gear")
                
                .listRowBackground(Color.blue)
            
        
        .foregroundColor(Color.red)
        .accentColor(Color.yellow)
    

【讨论】:

壮观!就是这样。谢谢!

以上是关于带有 SwiftUI 的 Apple Watch 上列表项的背景 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swiftui - Apple Watch 上的金属渲染

在 SwiftUI 中使用 WCSession 向 Apple Watch 发送消息

为 SwiftUI Apple Watch App 实现基于页面的导航

使用 SwiftUi 为 Apple Watch 构建一个基本的高度计

Apple Watch SwiftUI 地图事件?如何读取数字表冠旋转的当前区域跨度?

SwiftUI .rotation3dEffect 动画在 Apple Watch 列表行中没有所需的深度效果