首页 > 解决方案 > macOS SwiftUI:基于子最小宽度约束窗口最小宽度

问题描述

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

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

在此处输入图像描述

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

在此处输入图像描述

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

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

在此处输入图像描述

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

看起来真的不太.frame()好(例如我什么都做不了idealWidth)。但也许我只是用错了。

标签: macosswiftuimacos-big-sur

解决方案


推荐阅读