iOS17.2中HStack内嵌自定义视图时view-aligned的scrollPosition失效求助
iOS 17.2中HStack嵌套自定义视图时scrollPosition无法正常更新的问题
在iOS 17.2版本中,当HStack内部使用自定义视图时,scrollPosition修饰器无法正常更新绑定的滚动ID。滚动视图时,绑定的scrollID值完全不会变化。
复现代码
struct NumberView: View { var number: Int var body: some View { Text("\(number)").frame(width: 150, height: 150).background(.red) } } struct ContentView: View { struct identifiableNumber: Identifiable, Hashable { var id: Int { return number } let number: Int } @State var scrollID: Int? let allNumbers: [identifiableNumber] = [identifiableNumber(number: 0), identifiableNumber(number: 1), identifiableNumber(number: 2), identifiableNumber(number: 3), identifiableNumber(number: 4)] var body: some View { Text("\(scrollID ?? -1)") ScrollView(.horizontal, showsIndicators: false) { HStack { ForEach(allNumbers) { numberIn in NumberView(number: numberIn.number).scrollTargetLayout() } }.frame(height: 100).scrollTargetLayout() }.scrollTargetBehavior(.viewAligned(limitBehavior: .always)) .defaultScrollAnchor(.leading) .scrollPosition(id: $scrollID) } }
已知临时方案(无法适配我的业务场景)
- 使用
LazyHStack替代HStack - 放弃自定义视图,直接在
ForEach中编写原生组件(如直接使用Text)
咨询问题
- 有没有其他可行的解决办法?
- 如何提交SwiftUI的bug?
内容的提问来源于stack exchange,提问作者CalebK
相关产品推荐
相关产品推荐

