作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个示例 View ,我正在使用它来尝试弄清楚 VSplitView 和 HSplitView 如何协同工作,但我发现它的行为并不像我预期的那样。
struct ContentView: View {
var body: some View {
VStack {
HSplitView {
VStack {
VSplitView {
HStack {
Spacer()
Text("top")
Spacer()
}
.frame(maxHeight: .infinity)
.background(.red)
HStack {
Spacer()
Text("middle")
Spacer()
}
.frame(maxHeight: .infinity)
.background(.green)
HStack {
Spacer()
Text("bottom")
Spacer()
}
.frame(maxHeight: .infinity)
.background(.blue)
}
}
VStack {
Spacer()
Text("Right")
Spacer()
}
.frame(minWidth: 200, idealWidth: 250, maxWidth: 400)
.background(.yellow)
}
HStack {
Text("Status")
.font(.footnote)
.padding()
.frame(maxHeight: 20)
Spacer()
}
.background(.gray)
}.frame(minWidth: 600, maxWidth: .infinity, minHeight: 600, maxHeight: .infinity)
}
}
我发现当将 HSplitView 分隔线向左拖动足够大时,整个 View 会缩小并在左侧留下空间。分隔器在松开时也会弹回。是否有修改器或更好的布局可用于使其不具有那种奇怪的收缩效果?我没有看到 Xcode 的侧边栏这样做。另外,如何消除 VSplitView 与其下方 View 之间的间隙?
最佳答案
在 SwiftUI 中,窗口大小是基于内容的,因此当您限制内容的最小大小时,您必须对一侧(假设左侧)设置相同的大小限制,以便在允许的范围内通过分隔符更改右侧,即可能的模式如下:
LeftSideView()
.frame(minWidth: 600) // << == to minWidth below
RightSideView()
.frame(maxWidth: 200) // << because this allows 0
}
.frame(minWidth: 600, maxWidth: 800, minHeight: 600, maxHeight: 800)
一般计算所有组合的内部和外部尺寸之和相等
使用 Xcode 13.2/macOS 12.2 测试
关于swift - 如何将 HSplitView 左右固定到窗口范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71598189/
我有一个示例 View ,我正在使用它来尝试弄清楚 VSplitView 和 HSplitView 如何协同工作,但我发现它的行为并不像我预期的那样。 struct ContentView: View
我是一名优秀的程序员,十分优秀!