升级到 Xcode 12 后,SwiftUI 列表视图有不同的颜色深浅

Posted

技术标签:

【中文标题】升级到 Xcode 12 后,SwiftUI 列表视图有不同的颜色深浅【英文标题】:SwiftUI List view have a different shade of color after I upgraded to Xcode 12 【发布时间】:2020-10-15 03:44:22 【问题描述】:

升级到 Xcode 12 后,与背景相比,我的列表视图具有不同的白色或黑色阴影(取决于浅色模式或深色模式)。但我在同一个应用程序中的其他列表视图没问题。为什么? 以下是屏幕截图和随附的代码。请指教,谢谢。

List
        
            VStack
            
                Picker("Numbers", selection: self.$selectorIndex)
                
                    ForEach(0..<self.numbers.count)
                    
                        index in Text(self.numbers[index]).tag(index)
                    
                
                .pickerStyle(SegmentedPickerStyle())
                if numbers[selectorIndex]=="Alphabetically"
                
                    ForEach(appointments_title)
                    
                        order in
                        HStack
                        
                            Text("\(order.title)").font(.headline)
                            Spacer()
                            Text("\(order.date, formatter: ContentView.self.taskDateFormat)").font(.headline)
                        .padding(.bottom).contentShape(Rectangle())
                            .onTapGesture    order.isExpanded.toggle() //.animation(.linear(duration: 0.3))
                        if order.isExpanded  Text("\(order.descript)").frame(maxWidth: .infinity, alignment: .topLeading).padding(.bottom) 
                        else     EmptyView() 
                    
                

【问题讨论】:

真正的问题是什么?你担心哪种颜色? 假期列表视图要么完全是纯白色,要么是纯黑色。约会列表视图是灰色的,它不与背景融合。 【参考方案1】:

这是默认行为,与列表的格式有关。我会比较两组代码并检查:

    它们可能有不同的父视图结构(即在 NavigationViews 中的放置方式不同),

    您可能在代码中使用了部分或组,

    您还可以在 List 上添加 ListStyle 修饰符之一以覆盖其默认样式:

        .listStyle(PlainListStyle())
        .listStyle(InsetListStyle())
        .listStyle(GroupedListStyle())
        .listStyle(SidebarListStyle())
        .listStyle(InsetGroupedListStyle())
        .listStyle(DefaultListStyle())
    

【讨论】:

它们的结构相似,除了最后。约会列表视图 .navigationBarTitle("My Appointment") .navigationBarItems(trailing: Button(action: self.showAddDate = true, label: Image(systemName: "plus.circle").resizable().frame(width: 32, height: 32, alignment: .center))) .sheet(isPresented: $showAddDate) AddDate().environment(\.managedObjectContext, self.managedObjectContext) 假期列表视图.navigationBarTitle(stateTitle) 当我注释掉 .navigationBarItems 和 .sheet 时,我没有那种有趣的灰色阴影。 很高兴听到您发现问题出在哪里。如果是,请标记为正确答案 有没有办法让 .navigationBarTitle 和 .sheet 没有那种灰色阴影? 您是否尝试在上面的#3 中添加一个修饰符?我认为其中一个会将格式更改为您想要的方式。您可能只想在两个屏幕上放置相同的修饰符,以防万一。 对不起,是的,刚刚试过,它奏效了。我使用了 .listStyle(PlainListStyle()) 感谢您的帮助!

以上是关于升级到 Xcode 12 后,SwiftUI 列表视图有不同的颜色深浅的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 12 + SwiftUI List:点击粘贴时列表行叠加

无法单击列表中的 NavigationLink (SwiftUI)

SwiftUI - 未取消选择列表项

SmartConfig 在升级到 Xcode 12.5 后停止工作

SwiftUI:选择列表中的项目后更新数据

升级到 Xcode 12.5 后的 xcodebuild 问题