gpt4 book ai didi

ios - SwiftUI - 如何在纵向模式下删除使用 SidebarListStyle 样式的 List 后面的白色背景

转载 作者:行者123 更新时间:2023-12-03 23:02:32 25 4
gpt4 key购买 nike

我有一个带有 SidebarListStyle 样式的列表(iOS 14 中的新功能)在 NavigationView 中.

struct ContentView: View {
let data = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen"]

var body: some View {
NavigationView {
List {
Section(header: Text("Section")) {
ForEach(data, id: \.self) { word in
Text(word)
}
}
}
.listStyle(SidebarListStyle())
.navigationBarTitle(Text("Title"), displayMode: .large)
}
}
}
问题是列表中的每一行后面都有一个白色矩形,但仅限于纵向模式。风景上没问题。

我不要那个白底,谁知道 如何删除它 ?此外,在启动应用程序时,它似乎出现了故障——起初它很好,然后它添加了白色背景。

奇怪的是,如果我添加 .navigationViewStyle(StackNavigationViewStyle())NavigationView ,白色背景消失,启动正常。
struct ContentView: View {
let data = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen"]

var body: some View {
NavigationView {
List {
Section(header: Text("Section")) {
ForEach(data, id: \.self) { word in
Text(word)
}
}
}
.listStyle(SidebarListStyle())
.navigationBarTitle(Text("Title"), displayMode: .large)
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
左:如何启动,右:启动后的样子

↑ 这就是我想要的。
但是,现在横向模式仅限于全角列表,我也不想要。

编辑: @Omid的回答
我添加了一种背景颜色以匹配默认颜色:
Text(word)
.listRowBackground(Color(UIColor.systemGroupedBackground))
但是启动故障仍然存在。

编辑: @pawello2222的回答
工作正常,旋转时只是一个奇怪的过渡。

最佳答案

问题

Weirdly, if I add .navigationViewStyle(StackNavigationViewStyle()) tothe NavigationView, the white background disappears and it launchesfine.


这是因为在 iOS 14 中 NavigationView 的默认样式或 List不再总是相同的。看:
  • SwiftUI iOS14 - NavigationView + List - Won't fill space

  • 解决方案
    您可以使用不同的 NavigationStyle取决于 @Environment(\.horizontalSizeClass) :
    struct CustomNavigationStyle: ViewModifier {
    @Environment(\.horizontalSizeClass) var horizontalSizeClass

    @ViewBuilder
    func body(content: Content) -> some View {
    if horizontalSizeClass == .compact {
    content.navigationViewStyle(StackNavigationViewStyle())
    } else {
    content.navigationViewStyle(DoubleColumnNavigationViewStyle())
    }
    }
    }
    NavigationView {
    ...
    }
    .modifier(CustomNavigationStyle())

    关于ios - SwiftUI - 如何在纵向模式下删除使用 SidebarListStyle 样式的 List 后面的白色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64734426/

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