UICollectionViewController
UICollectionViewController ๋ ์์ ๊ฐ์ ํํ์ ์ฌ์ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ Controller ์ ๋๋ค. ์์ ๊ฐ์ ํํ์UICollectionViewController๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ UICollectionViewFlowLayout ์ ๊ฐ๋ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- itemSize
layout.itemSize = CGSize(width: width/2, height: width/2)
์์ ๊ฐ์ด ๊ธฐ๋ณธ์ ์ธ ์์ดํ ์ ์ฌ์ด์ฆ๋ฅผ ์ด๊ธฐํํ ๋ ์ฌ์ฉ๋๋ ์ฝ๋์ ๋๋ค.
- minimumLineSpacing
minimumLineSpacing ๋ cell ์ ํฌ๊ธฐ๊ฐ ๋ค์ํ ๋ ์ต์ํ ์ด ์ ๋๋ ๋จ์ด์ ธ ์์ด์ผ ํ๋ค๋ ๊ฐ๋ ์ ๋๋ค.
- minimumInteritemSpacing
minimumLineSpacing ์ด ์ํ๊ฐ๊ฒฉ์ ๋ํ๋๋ค๋ฉด minimumInteritemSpacing ๋ ์ข์ฐ ๊ฐ๊ฒฉ์ ์ต์ ๊ฐ๊ฒฉ์ ๋ํ๋ ๋๋ค.
- SectionInset
layout.sectionInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing)
SectionInset๋ ์ ์ฌ์ง์ ํ ๋๋ฆฌ ๋ถ๋ถ์ ๊ฐ๊ฒฉ์ ๋ํ๋ด๋ ๊ฐ๋ ์ ๋๋ค.
Struct ๊ตฌ์กฐ์ฒด ํ์ฉ
UICollectionView ์์ ํ Cell ์์ ๋ค์ํ ๋ด์ฉ์ ๋ด์ ๋, ์ ์ฉํ๊ฒ ์ธ ์ ์๋ ๋ฐฉ๋ฒ์ Struct ๊ตฌ์กฐ์ฒด๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฐ์ ์ด๋ ๊ฒ ์๋ก์ด Swift ํ์ผ์ Cell ์์ ๋ค์ด๊ฐ ์์๋ค์ ์ ์ธํด์ค๋๋ค. ์ด๋ฅผ ์ ์ธํ๋ ์ด์ ๋ ์ธ์คํด์ค๋ฅผ ํตํด BookStruct์ ํ๋กํผํฐ์ ์ ๊ทผํ๊ธฐ ์ํด์์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์, ๋ชจ๋ ์ฑ ์ ํฌ๊ดํ๋ BookInfo ๋ผ๋ ๋ ํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค. ์ด์ด์, book ์ด๋ผ๋ ์๋ก์ด ๋ณ์์ BookStruct๊ฐ ๋ค์ด๊ฐ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด์ค ํ ๊ฐ Cell ์ ๋ค์ด๊ฐ ๋ด์ฉ๋ค์ ์ ์ด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ bookName์ ํตํด BookInfo ์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
Kingfisher ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์, ๋งํฌ๋ง์ ์ด์ฉํด ์ด๋ฏธ์ง๋ทฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๋ ์์ ๋ ์งํํ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ์ธํ data ๋ bookName ๋ฐฐ์ด์ ๋ค์ด๊ฐ๋ ๊ฐ ์์๋ค์ ์๋ฏธํฉ๋๋ค.