swift 如何获取给定元素的大小(例如按钮)

o2g1uqev  于 2023-01-29  发布在  Swift
关注(0)|答案(1)|浏览(140)

我试图得到一个按钮的大小。按钮的框架大小是基于文本大小的动态的。我该怎么做呢?
我试着把它 Package 在GeometryReader中,并阅读geo.size.height等,但这每次都返回10,并弄乱了布局(不知何故实际上给了按钮那么高)。
我不知道有什么方法可以做到这一点,不涉及几何阅读器,搜索和发现什么。

Button(action: {
    //
}) {
    Text(options[i])
        .font(.system(.headline, design: .rounded))
        .frame(maxWidth: .infinity, alignment: .leading)
        .foregroundColor(Color.init(red: 0.3, green: 0.3, blue: 0.3))
    .frame(alignment: .leading)
    .padding()
    .background(
        RoundedRectangle(cornerRadius: 12)
            .fill(Color.white)
    )
}
zpgglvta

zpgglvta1#

要获取视图的大小,请添加一个GeometryReader作为.background。这需要包含另一个视图,当该视图出现时,您可以

Button(action: {
    //
}) {
    Text("something")
        .font(.system(.headline, design: .rounded))
        .frame(maxWidth: .infinity, alignment: .leading)
        .foregroundColor(Color.init(red: 0.3, green: 0.3, blue: 0.3))
    .frame(alignment: .leading)
    .padding()
    .background(
        RoundedRectangle(cornerRadius: 12)
            .fill(Color.white)
    )
    
    .background {
        GeometryReader { proxy in
            Color.clear
                .onAppear {
                    print(proxy.size)
                }
        }
    }
}

相关问题