SwiftUI的一个神奇之处在于,我们在做某些功能的时候,无需过多地关心布局信息,而是把主要精力放在业务逻辑部分,后续的文章中,我会专门写一篇Data Flow的文章。
那么SwiftUI布局的核心原理是什么呢? 主要分3个步骤:
父view提供一个建议的size
子view根据自身的特性返回一个size
父view使用子view返回的size对子view进行布局
GeometryReader的主要作用就是能够获取到父view建议的尺寸。
GeometryProxy
在上边例子中,我们用到了一个proxy参数,这个参数的类型是GeometryProxy,我们先看看它的定义:
size比较直观,就是返回父view建议的尺寸
subscript可以让我们获取.leading,.top等等类似这样的数据
safeAreaInsets可以获取安全区域的Insets
frame(in:)要求传入一个CoordinateSpace类型的参数,也就是坐标空间,可以是.local, .global或者 .named(),其中 .named()可以自定义坐标空间,这个在下边的例子中会用到
https://zhuanlan.zhihu.com/p/157799541?utm_id=0