SwiftUI中的GeometryReader和GeometryProxy有什么区别?

时间:2020-06-14 20:29:53

标签: swiftui

根据苹果公司

GeometryReader 一个容器视图,根据其自身大小和坐标空间定义其内容。

GeometryProxy: 用于访问容器视图的大小和坐标空间(用于锚点分辨率)的代理。

我试图了解何时使用GeometryReader以及何时使用GeometryProxy?我做了谷歌,但没有看到任何结果。所以我在这里问,以便像我这样的新开发人员可以将其用作参考。

1 个答案:

答案 0 :(得分:4)

GeometryReader

SwiftUI的GeometryReader允许我们确定尺寸和 视图的坐标取决于其自身的大小和坐标。

您可以像这样使用GeometryReader

GeometryReader { geometry in
    SomeView()
        .offset(x: geometry.size.width / 2)
}

GeometryProxy

上面的代码中的闭包变量(geometry)类型为GeometryProxy。该结构为我们提供了以下信息:

public var size: CGSize { get }
public var safeAreaInsets: EdgeInsets { get }
public func frame(in coordinateSpace: CoordinateSpace) -> CGRect
public subscript<T>(anchor: Anchor<T>) -> T where T : Equatable { get }

基本上,GeometryReader 读取视图(其大小,坐标等),并返回一个GeometryProxy结构,您可以从中访问所有信息。

有用的链接: