在SwiftUI中,GeometryReader和GeometryProxy有什么区别?

8

根据苹果公司的说法,

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

GeometryProxy:用于访问容器视图的大小和坐标空间(用于锚定解析)的代理。

我正在尝试理解何时使用GeometryReader和何时使用GeometryProxy?我已经在Google上搜索了,但没有看到相关的帖子。因此,我在这里提问,以便像我这样的新开发人员可以将其作为参考。

1个回答

16

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结构,您可以从中访问所有信息。

有用的链接:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接