具有 GeometryReader
部分功能的 SwiftUI 容器视图。
GeometryReader
每次容器视图的几何属性发生变化时,都会重新计算其 body。 如果 body 仅依赖于容器视图几何信息的子集,这可能会导致不必要的重新计算。 例如,子视图可能依赖于父视图的大小,但不依赖于其位置。
此软件包提供了容器视图,每个视图都提供 GeometryReader
功能的子集。 这些容器视图具有与 GeometryReader
相同的空间填充行为,但仅在其返回值更改时才重新计算其 body。
使用 SizeReader
、SafeAreaReader
或 BoundsReader
读取容器视图的大小和/或安全区域。
SizeReader { size in
/// content
}
使用 FrameReader
读取容器视图在给定坐标空间中的 frame。
FrameReader(in: .global) { frame in
/// content
}
为任何 reader 提供一个键路径,以从容器视图中读取单个几何值。
SizeReader(\.width) { width in
/// content
}
FrameReader(\.minY, in: .global) { minY in
/// content
}
使用 GeometryValueReader
计算并读取容器视图中的单个几何值。
GeometryValueReader { proxy in
proxy.bounds(of: .scrollView)?.height
} content: { scrollViewHeight in
/// content
}
SwiftUIFrameReader
以开始使用。Twitter 上的 @ciaranrobrien。