From the code below, I can't figure out why Preference key is not read from the view put in background of HStack. Strangely, If I put that BGViewSetter to the Text Views inside ForEach loop, it works. Unless I have ommitted something too obvious, it looks like a bug. Anybody can confirm it? Thanks xcode12.2
ios 14.2
struct BGViewSetter: View {
		var body: some View {
				GeometryReader { geometry in
						RoundedRectangle(cornerRadius: 25.0)
								.fill(Color.init(#colorLiteral(red: 0.9372549057, green: 0.3490196168, blue: 0.1921568662, alpha: 1)))
								.preference(key: TestRectPreferenceKey.self,
														value: TestRectPreference(frame: geometry.frame(in: .global)))
				}
		}
}
		struct FinalView : View
		{
				@State var offsetX : CGFloat = .zero
				@State var info = ""
				@State var size : CGFloat = .zero
				var body: some View
				{
								VStack
								{
										Text("FinalView : \(info)")
												HStack
												{
														ForEach( 1 ..< 10)
														{ i in
																Text("\(i)")
																		.frame(width: 100)
																		.opacity(0.8)
														}
												}
												.background(BGViewSetter())
												.animation(.easeOut)
												.gesture(
														DragGesture()
																.onChanged
																{ gesture in
																		self.offsetX = gesture.translation.width
																}
																.onEnded
																{ _ in
																		self.offsetX = .zero
																}
												)
												.offset(x: self.offsetX)
										Text("Footer")
										Divider()
										Spacer()
								}
								.onPreferenceChange(TestRectPreferenceKey.self)
																		{
																						self.size = $0.frame.height
																						self.info = "Pref Chng : \(self.size)"
																		}
				}
		}
		struct PreferenceKeyTest_Previews: PreviewProvider {
				static var previews: some View {
						FinalView()
				}
		}
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
deleted