SwiftUI 内功之 布局信息GeometryReader 与 PreferenceKey

SwiftUI 内功之 布局信息GeometryReader 与 PreferenceKey

SwiftUI视图布局取决于每个视图状态。此状态由内部属性,来自环境的外部值等混合而成。对于高级自定义布局,有时视图也需要来自其子级的信息,无论该信息是否直接。

一个常见的例子是,父视图需要知道孩子的大小:
在本文中,我们探讨如何做到这一点。

视图大小是一个示例:相同的概念适用于符合的任何其他类型Equatable。

读取视图大小

当我们需要空间的信息,我们基本上在SwiftUI一个选项:GeometryReader。

GeometryReader是一个视图,它填充了水平和垂直方向上所有可用的空间,并带有一个GeometryProxy实例,使我们可以访问其容器的大小和坐标空间。

var body: some View {
  GeometryReader { geometryProxy in
    ...
    // Use geometryProxy to get space information here.
  }
}

在我们的情况下,我们不想GeometryReader直接使用:相反,我们对特定视图的空间信息感兴趣。

SwiftUI提供.overlay()和.background(),分别在另一个视图的前面和后面添加了一个额外的视图。最重要的是,这些视图的建议大小等于它们应用于的视图的大小,从而使其成为我们正在寻找的对象的理想选择:

还有 76% 的精彩内容
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥9.90 继续阅读

友情链接更多精彩内容