具有绑定的视图会导致AnchorReference在SwiftUI中返回nil
我正在和SwiftUI的主持人合作。以下代码正确向上发送首选项:具有绑定的视图会导致AnchorReference在SwiftUI中返回nil,swiftui,Swiftui,我正在和SwiftUI的主持人合作。以下代码正确向上发送首选项: struct BoundsPreferenceKey: PreferenceKey { typealias Value = Anchor<CGRect>? static var defaultValue: Value = nil static func reduce( value: inout Value, nextValue: () -> Value
struct BoundsPreferenceKey: PreferenceKey {
typealias Value = Anchor<CGRect>?
static var defaultValue: Value = nil
static func reduce(
value: inout Value,
nextValue: () -> Value
) {
value = nextValue()
}
}
struct ExampleView: View {
@State var text = "Hello World"
var settings = ["Option 1","Option 2"]
@State var mapChoioce = 0
var body: some View {
VStack {
Text(text)
.anchorPreference(key: BoundsPreferenceKey.self,value: .bounds) { $0 }
}
.overlayPreferenceValue(BoundsPreferenceKey.self) { preferences in
GeometryReader { geometry -> AnyView? in
print("Preference")
print(preferences)
return preferences.map {
AnyView( Rectangle()
.stroke()
.frame(
width: geometry[$0].width,
height: geometry[$0].height
)
.offset(
x: geometry[$0].minX,
y: geometry[$0].minY
)
)
}
}
}
}
}
这回答了你的问题吗?注意这里的
boundsReferenceKey
。@Asperi,干杯,这很有效。尽管如此,这看起来确实像是一种变通方法。你会说SwiftUI不应该返回零吗?这回答了你的问题吗?注意这里的boundsReferenceKey
。@Asperi,干杯,这很有效。尽管如此,这看起来确实像是一种变通方法。你认为SwiftUI不应该返回零吗?
struct ExampleView: View {
@State var text = "Hello World"
var settings = ["Option 1","Option 2"]
@State var mapChoioce = 0
var body: some View {
VStack {
Text(text)
.anchorPreference(key: BoundsPreferenceKey.self,value: .bounds) { $0 }
Picker("Options", selection: $mapChoioce) {
ForEach(0 ..< settings.count) { index in
Text(self.settings[index])
}
}
.pickerStyle(SegmentedPickerStyle())
}
.overlayPreferenceValue(BoundsPreferenceKey.self) { preferences in
GeometryReader { geometry -> AnyView? in
print("Preference")
print(preferences)
return preferences.map {
AnyView( Rectangle()
.stroke()
.frame(
width: geometry[$0].width,
height: geometry[$0].height
)
.offset(
x: geometry[$0].minX,
y: geometry[$0].minY
)
)
}
}
}
}
}