μλ νμΈμ! μ€λμ SwiftUI μ Lazy ν€μλλ₯Ό μ 리νλ €κ³ ν©λλ€.
μ§λλ²μ VStack, HStack, ZStack μ λν΄μ μ 리λ₯Ό νμλλ°, ZStack μ μ μΈνκ³ λ μμ Lazy λΌλ ν€μλκ° λΆμ LazyVStack, LazyHStack μ΄ μμ΅λλ€ π Lazy λΌλ ν€μλκ° λΆλ 건 μ΄λ€ μ°¨μ΄κ° μλμ§ κΆκΈν΄μ μ°Ύμλ΄€μ΄μ.
π LazyVStack LazyHStack :: lazy load views
LazyVStack μ VStack κ³Ό λμΌνκ² vertical (μΈλ‘) λ°©ν₯μΌλ‘ νλͺ©λ€μ 보μ¬μ£Όλ λ·°μ΄μ§λ§, κ° νλͺ©μ΄ νμν λλ§ μμ±ν©λλ€. LazyHStack μ Horizontal (κ°λ‘) λ°©ν₯μΌλ‘, LazyVStack κ³Ό λ°©ν₯λ§ λ€λ₯΄κ³ λμΌν©λλ€!
Stack μ΄ lazy νλ€λ κ²μ, μ€νλ·°μ κ° νλͺ©λ€μ΄ νλ©΄μ λ λλ§λκΈ° μ κΉμ§ νλͺ©μ λ§λ€μ§ μλλ€λ κ±Έ μλ―Έν΄μ. νλ©΄μ 보μ¬μ§μ§ μλ νλͺ©μ κ·Έλ¦¬μ§ μκ³ μλλ κ²μΌλ₯΄λ€κ³ νννμ§λ§, 보μ¬μ§μ§ μλ νλͺ©μ κ·Έλ¦¬μ§ μκΈ° λλ¬Έμ νλ©΄μ 보μ¬μ§ λ°μ΄ν°λ λ λΉ λ₯΄κ² 그릴 μ μλ μ₯μ μ΄ μμ΄μ! κΈ°μ‘΄μ UITableView μμ νλ©΄μ 보μ¬μ§λ Cell λ§ μμ±ν΄λκ³ , cell μ reuse νλ κ²κ³Ό λμΌνλ€κ³ λ³Ό μ μμκ² κ°μμ.
μ€νλ·°κ° νλ©΄μ 보μ¬μ§λ μμμλ§ μλ€λ©΄ νΌν¬λ¨Όμ€μ μ΄μκ° μκ² μ§λ§, μ€νλ·°μ λ°μ΄ν°κ° μμ² λ§κ³ μ€ν¬λ‘€λ·° λ΄μ λ€μ΄μμ΄μλ€λ©΄ νΌν¬λ¨Όμ€μ μ΄μκ° μκΈ°κ² μ£ ?! νλ©΄μ μ 체 λ°μ΄ν°κ° λ€ λ³΄μ¬μ§μ§ μλ κ²½μ°λΌλ©΄ Lazy Stack μ μ¬μ©νλκ² μ’κ² λ€μ! π
μλ μμμ²λΌ λ°μ΄ν°κ° λ§μ κ²½μ° νλ©΄μ λ°μ΄ν°κ° 보μ¬μ§λλ° μκ°μ΄ λ€λ₯Έκ² λκ»΄μ§κ±°μμ!
struct ContentView: View {
var body: some View {
ScrollView {
LazyVStack(spacing: 16) {
ForEach(0 ..< 10000) { item in
ZStack {
RoundedRectangle(cornerRadius: 20)
.stroke(.blue, lineWidth: 2)
.frame(height: 100)
Text("\(item)")
}
}
}
.padding()
}
}
}
μλ GIF μΌμͺ½μ΄ LazyVStack μ μ¬μ©νκ²μ΄κ³ μ€λ₯Έμͺ½μ΄ VStack μ μ¬μ©νκ±°μμ! μμμΌλ‘ μ°μ΄λ³΄λ 1μ΄μ΄μ μκ°μ΄ λ 걸리λλΌκ΅¬μ. μ‘°κΈ μ μ μκΈ΄ νμ§λ§ μ°¨μ΄κ° 보μ΄μκ² μ£ ?
Lazy ν€μλκ° λΆμ LazyVStack, LazyHStack λ§ μλκ² μλλΌ Grid μ κ²½μ° LazyVGrid, LazyHGrid κ° μμ΅λλ€. μ°Έκ³ λ‘ Grid λ UIKit μ UICollectionView μ λΉμ·νκ² μ¬λ¬κ°μ column μΌλ‘ λ°μ΄ν°λ₯Ό λνλΌ μ μλ λ·°μ΄κ³ , List λ UITableView μ λΉμ·νκ² νλμ column μΌλ‘ λ°μ΄ν°λ₯Ό λνλΌ μ μλ λ·°μ λλ€!
List μ κ²½μ°μλ Lazy ν€μλκ° λΆμκ² μμ΄μ μ°Ύμλ΄€λλ°, μλ λ§ν¬μ ν¬λΌ λ΅λ³μμλ List μ κ²½μ°μλ μ λΆ lazy νκ² λ‘λνλ€κ³ νλ€μ! μμ μμ λ₯Ό List λ‘ λ³κ²½νκ³ λΉλν΄λ³΄λ LazyVStack μ μ¬μ©νλκ²κ³Ό νλ©΄μ λ‘λνλ μκ°μ΄ λΉμ·ν΄μ.
https://developer.apple.com/forums/thread/651256
π μ°Έκ³ λ¬Έμ
LazyVStack - https://developer.apple.com/documentation/swiftui/lazyvstack
LazyVGrid - https://developer.apple.com/documentation/swiftui/lazyvgrid
List - https://developer.apple.com/documentation/swiftui/list
'π iOS > SwiftUI' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS/SwiftUI] @Environment μμ보기 / λͺ¨λ¬ λ·° λ«κΈ° dismiss νμ© (0) | 2023.06.15 |
---|---|
[iOS/SwiftUI] @ViewBuilder, @resultBuilder κ° λ¬΄μμΌκΉ? (0) | 2023.06.07 |
[iOS] SwiftUI property wrapper @State @Binding (0) | 2022.06.02 |
[iOS/SwiftUI] Text, Image κΈ°λ³Έ μ 리 + μμ€ν μ΄λ―Έμ§ (0) | 2022.05.05 |
[iOS/SwiftUI] View, Stack κΈ°λ³Έ μ 리 (0) | 2022.04.29 |