Sorry for not including the code
I simplified the example and every time I managed to reproduce the "Bound preference tried to update multiple times..." in diff conditions
Preference case 1 video
Preference case 2 video
Preference case 3 video
Preference case 4 video
import SwiftUI
struct ContentView: View {
@State var width: CGFloat? = nil
@State var myText : String = "Text"
var body: some View {
VStack{
TextField("Mytext", text: $myText)
Spacer()
Text("\(myText)")
.background(
GeometryReader{ proxy in
Color.clear.preference(key: WidthKey.self, value: proxy.size.width)
}
)
.fixedSize()
.frame(width: 200, height: 200)
.onPreferenceChange(WidthKey.self){self.width = $0 }
}
}
}
struct WidthKey: PreferenceKey {
static var defaultValue: CGFloat? = nil
static func reduce(value: inout CGFloat?, nextValue: () -> CGFloat?) {
value = value ?? nextValue()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}