首页 > 解决方案 > SwiftUI:点击获取 LazyHGrid 中的单元格视图框架?

问题描述

我有以下网格设置:

struct TestView: View {
    
    
    var topRowItems = [
        GridItem(.flexible())
    ]
    
    
    let testIds:[Int]
    
    
    var body: some View {
        
        GeometryReader { geo in
            
            ScrollView(.horizontal) {
                
                LazyHGrid(rows: topRowItems, alignment: .center, spacing: 0) {
                    
                    ForEach(testIds, id: \.self) { testId in
                        

                        Rectangle()
                            .stroke(Color(.blue), lineWidth: 0.5)
                            .padding(4)
                            .frame(width: geo.size.height, height: geo.size.height, alignment: .center)
                            .onTapGesture {
                          
                             /// .... GET FRAME OF RECTANGLE ....

                            }
                            .overlay(
                                Text("TEST ID: \(testId)")
                            )
                    }
                    
                }
                .background(Color(.brown))
            }
            
        }
    }
    
}

我知道我可以将每个 Rectangle 包装在它们自己的中GeometryReader,并使用它来获取全局框架。这真的是我应该为每个“细胞”做的吗?如果网格变大怎么办,我应该这样做还是有另一种方法可以让我不必在每个单元格周围使用几何阅读器?

标签: swiftui

解决方案


推荐阅读