我正在使用Xcode beta7,以下是代码。 这是针对MacOs应用的。
这是我的代码:
import SwiftUI
struct ContentView: View {
@State var isClicked = false
var body: some View {
ScrollView {
Text("Click me").onTapGesture {
self.isClicked.toggle()
}.border(Color.red)
V1(isClicked: $isClicked)
}
}
}
struct V1: View {
@Binding var isClicked: Bool
var body: some View {
VStack(alignment: .leading) {
if isClicked {
ForEach(0...100, id: \.self) { index in
Text("value \(index)")
}
}
}.padding()
}
}
运行此代码,然后点击点击我按钮。 您将看到scrollView的内容大小未更新,并且保持压缩状态。
如果我尝试通过使用鼠标来调整屏幕大小来调整应用程序框架的大小,那么ScrollView的内容大小会立即捕捉到正确的大小。
我是否需要做一些事情来使ScrollView自动执行此操作(而不是我必须用鼠标手动增加应用程序的框架?
答案 0 :(得分:0)
我最近在iOS watchOS上遇到了同样的问题。我解决的唯一方法是,将ScrollView的内容作为函子在具有ScrollView的结构中移动。如下所示。
struct ContentView: View {
@State var isClicked = false
var body: some View {
ScrollView {
Text("Click me").onTapGesture {
self.isClicked.toggle()
}.border(Color.red)
otherView()
}.frame(maxWidth: .infinity, maxHeight: .infinity)
}
func otherView() -> some View{
return VStack(alignment: .leading) {
if isClicked {
ForEach(0...100, id: \.self) { index in
Text("value \(index)")
}
}
}.padding()
}
}
它看起来像个虫子。