gpt4 book ai didi

ios - SwiftUI child 溢出

转载 作者:行者123 更新时间:2023-12-01 16:11:17 25 4
gpt4 key购买 nike

在 SwiftUI 中,即使 subview 更大,有没有办法让父 View 保持固定大小?在下面的示例中,即使您在父项上显式设置帧大小,父项也会增长以适应子项的内容:

import SwiftUI

struct ContentView: View {
var body: some View {
ZStack {
ChildView()
VStack {
Text("Parent")
Spacer()
}
}
.frame(width: 100, height: 100)
.background(Color.red)
.border(Color.black)
}
}

struct ChildView: View {
var body: some View {
VStack {
Text("Child")
}
.frame(width: 200, height: 200)
.background(Color.blue)
}
}
screenshot
我希望“父”文本保持在父框架内,但由于 subview 较大,它会被向上推。

最佳答案

这是因为 SwiftUI 布局的工作方式不同 - 默认情况下,父堆栈适合内容。我们采取ZStack并放入其中ChildViewZStack立即变成它的大小,然后我们放置 VStackZStackSpacer将其扩展为全尺寸,即。 ChildView的大小最大,然后我们应用 .frame仅从原始 ZStack 生成请求大小的 View 并且因为它是透明的,默认情况下,我们可以看到 ZStack 的所有内容.然后我们将边框应用到这个结果 View (但由于相同的透明度原因仍然看到 ZStack 的内容)......等等。
你想要达到的效果是
demo

struct ContentView: View {
var body: some View {
ZStack {
ChildView()
VStack {
Text("Parent")
Spacer()
}
.frame(width: 100, height: 100) // << here !!
.border(Color.black)
}
.background(Color.red)
}
}

关于ios - SwiftUI child 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63876746/

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