iOS UIKit UICollectionVIew Flow Layout / Compositional Layout, Texture, FlexLayout ๊ธฐ๋ฐ์ ๋ ์ด์์ ์ค์ต
- Flow Layout ๊ธฐ๋ฐ Grid ํ์ ๋ ์ด์์ ๊ตฌ์ฑ
- Flow Layout ๊ธฐ๋ฐ Self-Sizing Cell ๋ ์ด์์ ๊ตฌ์ฑ
- Compositional Layout ๊ธฐ๋ฐ Self-Sizing Cell ๋ ์ด์์ ๊ตฌ์ฑ
- Compositional Layout ๊ธฐ๋ฐ nested collectionView ๋ ์ด์์ ๊ตฌ์ฑ
- Texture ๊ธฐ๋ฐ Masonry ํ์์ ๋ ์ด์์ ๊ตฌ์ฑ(Pinterest)
- FlexLayout ๊ธฐ๋ฐ Self-Sizing Feed ํ์ ๋ ์ด์์ ๊ตฌ์ฑ
UIKit, SnapKit, PinLayout, FlexLayout, Texture
- Flow Layout
- class ๊ธฐ๋ฐ์ผ๋ก ์ปค์คํ ๊ตฌ์ฑํ๊ณ , Item ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก ๊ฐ intersection์ ํ ๋๋ก main axis์ ๋ง์ถ์ด ๋ทฐ๋ฅผ ๊ตฌ์ฑ
- ์ค์ง์ ์ผ๋ก delegate๋ก ๊ตฌ์ฑ์ ํ๋ฉด์ ๊ธฐ๋ฐ์ ๊ตฌ์ฑํด์ผ ํ ์ฝ๋์ ์์ด ๊ฐ์ฅ ๋ง๋ค
- Compositional Layout
- ๋ถ๋ถ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ค
- ๋ณ๋์ ํด๋์ค ๊ตฌ์ฑ ์์ด ๊ฐ ์์๋ค์ ํฌ๊ธฐ์ feature๋ฅผ ๊ตฌ์ฑ๊ฐ๋ฅํ๋ค
- delegate ๊ตฌ์ฑ์ด ๋ณ๋๋ก ํ์ ์๋ค
- Texture
- ์ฝ๋ ์ ๋ทฐ ํ์ฉ์ ์์ด์๋ง์ FlowLayout๊ณผ ๋ณ ๋ค๋ฅธ ์ฐจ์ด๊ฐ ์๋ค
- ํ์ง๋ง ์ปค์คํ ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๋ ์ธก๋ฉด์ ์์ด์ manual ํ SnapKit ๋ฑ์ ๊ตฌ์ฑ๊ณผ ๋น๊ตํ์ ๋, FlexBox ์์๋ฅผ ํ์ฉ์ ๊ฐ๋ฅํ๋ค - ์ ๊ทน์ ์ด์ง ์๋ค
- ์ฝ๋๋์ ์์ด์ ํฐ ์ฐจ์ด๋ฅผ ์ฒด๊ฐํ์ง ๋ชปํ๋ค
- node ๋ณ๋ก Component๋ฅผ ๊ตฌ๋ถ์ง์ด ๊ตฌ์ฑํ๋ ์ ์์ ๋ง์ดํฌ๋ก ๋์์ธ ์์ญ์ ์กฐ๊ธ ๋ ๋ง์ถฐ์ง ๋ฏ ํ๋ค - ์ ์ธ์ ์ผ๋ก ๊ตฌ์ฑ๋์๋ค๋ ์๋ฏธ
- Rx๋ฅผ ๊ฒฐํฉ, Obj-c ๊ธฐ๋ฐ์ ๋ ํผ๋ฐ์ค ์ฝ๋๊ฐ ๋ง๋ค
- FlexLayout
- ํ์คํ ์ฝ๋๋์ด ๋งค์ฐ ์ ๋ค
- update / init ์์ ์์ ๋ทฐ์ ๋ ์ด์์ ๊ตฌ์ฑ์ ๋ณด๋ค ๊ฐ๋จํ๊ฒ ํ ์ ์์ผ๋ฉฐ PinLayout์ ํ์ฉํ๋ค๋ฉด ๋ ํธ๋ฆฌํด์ง๋ค
- ์ถ์ํ์ ๋จ๊ณ๊ฐ ์ ๋ณด๋ค๋ ๋์์ ธ ๊ฐ๊ฒฐํด์ง ์ฝ๋๊ฐ ๋ง๋ค
- Flow Layout
- ๊ฐ ์์๋ฅผ ์ํํ๋ฉด์ ์ง์ ์ ์ผ๋ก ์ฌ์ด์ฆ์ ๋ํ ๊ฐ์ ์ฒดํฌํ๊ณ ๋ทฐ๋ฅผ ์๋ก ๊ณ ์นจ ํด์ฃผ์ด์ผ ํ๋ค
- Compositional Layout
- ํธ-๋ฆฌ!, .estmated size์ ์์คํจ์ ๊นจ๋ซ์
- Texture
- layoutSpecThatFits์ ํ์ฉ์ผ๋ก ๊ทธ๋๋ง ์ ์ฉ ๊ฐ๋ฅํ ์์ค
- ๋ ์ด์์๊ณผ ์ฌ์ด์ง์ ์์ด์๋ ํ์คํ Container / Item์ ๊ฐ๋ ์ผ๋ก ์ ๊ทผํ ์ ์์ด ์ฉ์ดํ๋ค
- FlexLayout
- update ์์ ์์ ์ฃผ์ ๋๋ ๋ฐ์ดํฐ์ ๋ฐ๋ผ์ flex.markDirty()์ ํธ์ถ์ ํตํด์ ํด๋น ์ฌ์ด์ฆ์ ๋ง๊ฒ ๋๊ธฐํ๊ฐ ๊ฐ๋ฅํ๋ค
- grow/shirink, justify/asign ๋ฑ์ Container / Item ๊ด๊ณ ์ค์ ์ ๋ณด๋ค ํ์คํ๊ฒ ํ์ฌ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ๋ค