SwiftUI的一個神奇之處在于剂癌,我們在做某些功能的時(shí)候境肾,無需過多地關(guān)心布局信息永丝,而是把主要精力放在業(yè)務(wù)邏輯部分锹漱,后續(xù)的文章中,我會專門寫一篇Data Flow的文章慕嚷。
那么SwiftUI布局的核心原理是什么呢哥牍? 主要分3個步驟:
父view提供一個建議的size
子view根據(jù)自身的特性返回一個size
父view使用子view返回的size對子view進(jìn)行布局
GeometryReader的主要作用就是能夠獲取到父view建議的尺寸。
GeometryProxy
在上邊例子中喝检,我們用到了一個proxy參數(shù)嗅辣,這個參數(shù)的類型是GeometryProxy,我們先看看它的定義:
size比較直觀蛇耀,就是返回父view建議的尺寸
subscript可以讓我們獲取.leading,.top等等類似這樣的數(shù)據(jù)
safeAreaInsets可以獲取安全區(qū)域的Insets
frame(in:)要求傳入一個CoordinateSpace類型的參數(shù)辩诞,也就是坐標(biāo)空間,可以是.local,?.global或者??.named()纺涤,其中?.named()可以自定義坐標(biāo)空間译暂,這個在下邊的例子中會用到
https://zhuanlan.zhihu.com/p/157799541?utm_id=0