gpt4 book ai didi

ios - SwiftUI - 所有可见的 3 列/侧边栏布局?

转载 作者:行者123 更新时间:2023-12-04 17:19:52 25 4
gpt4 key购买 nike

我正在试验 SwiftUI 对多列侧边栏布局的新支持。我知道我可以做这样的事情:

struct SidebarContentView: View {

var body: some View {
NavigationView {
List {
ForEach(0...5, id: \.self) { i in
Text("\(i)")
}
}
.listStyle(SidebarListStyle())
.navigationTitle("List 1")

List {
ForEach(0...5, id: \.self) { i in
Text("\(i)")
}
}
.navigationTitle("List 2")

Text("Hello world")
.font(.largeTitle)
.navigationTitle("Content")
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
创建我的 3 列布局(2 个导航列,然后是一个更大的内容 View ),但最初会产生一个如下所示的 View :
enter image description here
我必须点击后退按钮才能使布局看起来像这样:
enter image description here
我真正想要的是同时显示所有 3 列,而无需点击后退按钮或任何东西,至少在 iPad 处于横向模式时是这样。一个示例如下所示:
enter image description here
谁能解释我如何实现这样的布局?当我的应用程序在 macOS 上运行或在 iPad 上以横向模式运行时,我希望它处于事件状态。在纵向模式下,我可以使用第一个屏幕截图中显示的导航样式,但希望所有 Pane 都可见。有任何想法吗?

最佳答案

更新:更好的解决方案

extension UISplitViewController {
open override func viewDidLoad() {
super.viewDidLoad()
self.show(.primary)
}
}
============================
看看这个github项目: SwiftUI-Introspect
import Introspect

@main
struct ExampleApp: App {
var body: some Scene {
WindowGroup {
NavigationView {
Text("Primary View")
Text("Supplementary View")
Text("Secondary View")
// show primary view at startup
.introspectSplitViewController(customize: { splitViewController in
splitViewController.show(.primary)
})
}
}
}
}
// Implement UISplitViewControlle selector
extension View {
public func introspectSplitViewController(customize: @escaping (UISplitViewController) -> ()) -> some View {
return inject(UIKitIntrospectionViewController(
selector: { introspectionViewController in

// Search in ancestors
if let splitViewController = introspectionViewController.splitViewController {
return splitViewController
}

// Search in siblings
return Introspect.previousSibling(containing: UISplitViewController.self, from: introspectionViewController)
},
customize: customize
))
}
}

关于ios - SwiftUI - 所有可见的 3 列/侧边栏布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66860456/

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