0

我制作了一个卡片样式的列表行,效果很好。问题是列表行背景颜色仍然存在。我可以通过将其设置为 systemGray6 使其消失,但它对暗模式的适应性不是很好,而且很可能有更好的方法来做到这一点。

卡片视图:

var body: some View {
    ZStack {
        
        Rectangle().fill(Color.white)
            .cornerRadius(10).shadow(color: .gray, radius: 4)
            .frame(width: UIScreen.main.bounds.width - 40)
        
        HStack {
            Image(uiImage: (UIImage(data: myVideo.thumbnailImage!) ?? UIImage(systemName: "photo"))!)
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: 100, height: 100)
            VStack {
                Text(myVideo.title!)
                    .multilineTextAlignment(.center)
                    .font(.body)
                    .padding(.bottom, 10)
                    .frame(maxWidth: UIScreen.main.bounds.width - 40, maxHeight: .infinity, alignment: .center)
                
                Text(myVideo.youtuber!)
                    .font(.subheadline)
            }
        }
        .padding(5)
    }
}

列表显示:

    var body: some View {
    NavigationView {
        if myVideos.isEmpty {
            Text("You have not added videos yet!")
            font(.subheadline)
        } else {
            List() {
                Section(header: Text("Not Watched")) {
                    ForEach(myVideos) { video in
                        if !video.watched {
                            NavigationLink(destination: MyVideoView(myVideo: video)) {
                                MyListRowView(myVideo: video)
                            }
                        }
                    }
                    .onDelete(perform: removeItems)
                }

                Section(header: Text("Watched")) {
                    ForEach(myVideos) { video in
                        if video.watched {
                            NavigationLink(destination: MyVideoView(myVideo: video)) {
                                MyListRowView(myVideo: video)
                            }
                        }
                    }
                    .onDelete(perform: removeItems)
                }
                .listRowBackground(Color(UIColor.systemGray6))
            }
            .navigationBarTitle("Videos")
            .listStyle(GroupedListStyle())
        }
    }
}

图片:(“WATCHED”中的预期行为和“NOT WATCHED”中的不正确行为

在此处输入图像描述

4

0 回答 0