首页 > 解决方案 > 如何在 SwiftUI 中将 GeometryReader 实现到(Z/H/V)堆栈

问题描述

无法为 ZStack() 实现 GeometryReader。下面是一个 GeometryReader 到 Text() 的实现示例:

GeometryReader { geometry -> Text in
    return Text("test")
}

但是当我尝试用 ZStack(或 Rectangle 或 HStack)做同样的事情时,我看到了:

GeometryReader {pr -> HStack<Rectangle> in
    return HStack() {
        Rectangle()
            .foregroundColor(Color.red)
    }
}

请检查此错误消息:https ://ibb.co/BBxScg8

标签: swiftswiftui

解决方案


GeometryReader 为您提供了一个在 HStack / VStack 等内部使用的变量。

GeometryReader { geo in
   HStack() {
       Rectangle()
          .foregroundColor(Color.red)
          .onTapGesture {
              print("width : \(geo.size.width), height : \(geo.size.height)")
           }
   }
}

推荐阅读