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

Nar*_*ren 3 swiftui

按照苹果的说法,

GeometryReader 一个容器视图,将其内容定义为其自身大小和坐标空间的函数。

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

我想了解何时使用 GeometryReader 以及何时使用 GeometryProxy?我做了谷歌,但没有看到任何帖子出现在结果中。所以我在这里问一下,以便像我这样的新开发人员可以参考。

paw*_*222 7

几何阅读器

SwiftUI 的 GeometryReader 允许我们根据其自身的大小和坐标来确定视图的大小和坐标。

你可以使用GeometryReader这样的:

GeometryReader { geometry in
    SomeView()
        .offset(x: geometry.size.width / 2)
}
Run Code Online (Sandbox Code Playgroud)

几何代理

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 }
Run Code Online (Sandbox Code Playgroud)

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

有用的链接: