macOS SwiftUI:基于子级最小宽度限制窗口最小宽度

时间:2021-04-24 10:16:00

标签: macos swiftui macos-big-sur

我的应用有一个主文档窗口,左侧包含一个列表,右侧包含一些详细信息:

    var body: some View {
        NavigationView {
            List(0 ..< 5) { layer in
                NavigationLink(destination: LayerDetail()) {
                    LayerItemCell()
                }
            }
            .frame(minWidth: 200.0)
        }
    }

enter image description here

我已经为 List 视图和右侧的详细视图指定了最小宽度。不幸的是,当我缩小窗口时,列表和详细信息视图都将被迫缩小到它们的最小值以下,SwiftUI 使列表消失,而不是将窗口限制为最小尺寸:

enter image description here

我真正想要的是窗口不要缩小那么小。但我真的不想添加 .frame(minWidth:) 约束,因为那样我在代码中有两个地方可以检查设计是否发生变化。

最后,如何让固定在左侧的图像下方的小状态栏保持不变?每个 Text 视图都有特定的宽度,当窗口太窄时,它会将 HStack 推向左侧,而不是向右截断:

enter image description here

我在视图层次结构的各个部分尝试了各种 .frame(alignment: .leading),但似乎都没有我想要的。视图左对齐,直到窗口变得太小,此时它们开始居中(并左右截断)。

看起来 .frame() 的效果确实不好(例如,我无法让 idealWidth 做任何事情)。但也许我只是用错了。

0 个答案:

没有答案