Lazy Grid Layout

Lazy Grid 允許創(chuàng)建靈活且易于調(diào)整的網(wǎng)格布局侮叮。我們可以創(chuàng)建 LazyVGrid 或 LazyHGrid胸墙,即創(chuàng)建一個垂直或水平增長的容器撩嚼。網(wǎng)格視圖只有在需要時才會渲染項目祖驱,因此有了“ Lazy”這個關(guān)鍵詞握恳。

適應(yīng)性 LazyVGrid

設(shè)置網(wǎng)格布局的最靈活方式是使用自適應(yīng) GridItem。我們可以設(shè)置一個最小尺寸捺僻,并讓元素自己設(shè)置最大尺寸乡洼。Lazy Grid 將自動適應(yīng)寬度,容納盡可能多的項目:

LazyVGrid(columns: [GridItem(.adaptive(minimum: 80))]) {
    ForEach(0 ..< 20) { item in
        Rectangle()
            .frame(height: 100)
    }
}

網(wǎng)格和項目間距

網(wǎng)格和 GridItem 都可以有間距匕坯。對于 LazyVGrid束昵,網(wǎng)格間距是行之間的間隔,而 GridItem 間距是項目之間的間隔葛峻。

LazyVGrid(
    columns: [GridItem(.adaptive(minimum: 80), spacing: 16)],
    spacing: 16) {

    ForEach(0 ..< 12) { item in
        RoundedRectangle(cornerRadius: 10)
            .fill(Color.blue)
            .frame(height: 100)
    }
}
.padding()
LazyHGrid

我們還可以將 Lazy Grid 設(shè)置為水平锹雏,而不是垂直,以行而不是列顯示术奖。

LazyHGrid(
    rows: [GridItem(.adaptive(minimum: 80), spacing: 16)],
    spacing: 12) {

    ForEach(0 ..< 20) { item in
        Rectangle().frame(width: 100)
    }
}

通過使用水平的 ScrollView 和有限的高度礁遵,便可以創(chuàng)建類似于應(yīng)用商店應(yīng)用列表的布局轻绞。

ScrollView(.horizontal) {
    LazyHGrid(
        rows: [GridItem(.adaptive(minimum: 80), spacing: 8)],
        spacing: 12) {

        ForEach(0 ..< 20) { item in
            Rectangle().frame(width: 300)
        }
    }
    .frame(height: 300)
}

固定列

如果想更精細地控制每行內(nèi)個別項的大小,可以使用 GridItem 的固定尺寸佣耐。


LazyVGrid(
    columns: [
        GridItem(.fixed(100), spacing: 8),
        GridItem(.fixed(160), spacing: 8),
        GridItem(.fixed(80), spacing: 8)
    ], spacing: 12) {

    ForEach(0 ..< 20) { item in
        Rectangle()
            .frame(height: 80)
    }
}

重復(fù)列

還可以通過設(shè)置 Array 的 repeating 和 count 屬性來設(shè)置每行固定數(shù)量的列政勃。

Array(repeating: .init(.flexible(), spacing: 8), count: 4)

參考資料

要了解有關(guān) Lazy Grid 更多信息,請訪問 SwiftUI 中的 Stacks, Grids and Outlines in SwiftUI.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兼砖,一起剝皮案震驚了整個濱河市奸远,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌讽挟,老刑警劉巖懒叛,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異戏挡,居然都是意外死亡芍瑞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門褐墅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拆檬,“玉大人,你說我怎么就攤上這事妥凳【构幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵逝钥,是天一觀的道長屑那。 經(jīng)常有香客問我,道長艘款,這世上最難降的妖魔是什么持际? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮哗咆,結(jié)果婚禮上蜘欲,老公的妹妹穿的比我還像新娘。我一直安慰自己晌柬,他們只是感情好姥份,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著年碘,像睡著了一般澈歉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屿衅,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天埃难,我揣著相機與錄音,去河邊找鬼。 笑死凯砍,一個胖子當著我的面吹牛箱硕,可吹牛的內(nèi)容都是我干的拴竹。 我是一名探鬼主播悟衩,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼栓拜!你這毒婦竟也來了座泳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤幕与,失蹤者是張志新(化名)和其女友劉穎挑势,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啦鸣,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡潮饱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诫给。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片香拉。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖中狂,靈堂內(nèi)的尸體忽然破棺而出凫碌,到底是詐尸還是另有隱情,我是刑警寧澤胃榕,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布盛险,位于F島的核電站,受9級特大地震影響勋又,放射性物質(zhì)發(fā)生泄漏苦掘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一楔壤、第九天 我趴在偏房一處隱蔽的房頂上張望鹤啡。 院中可真熱鬧,春花似錦挺邀、人聲如沸揉忘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泣矛。三九已至,卻和暖如春禾蚕,著一層夾襖步出監(jiān)牢的瞬間您朽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哗总,地道東北人几颜。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像讯屈,于是被迫代替她去往敵國和親蛋哭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容