๋ฐ์ํ
UICollectionViewFlowLayout
- ๋ ์ด์์ ์ค๋ธ์ ํธ
- UICollectionViewController์ ์ด๋์ ๋ผ์ด์ ์ ๋๊ฒจ์ฃผ๋ ํ๋ผ๋ฏธํฐ collectionViewLayout ๊ฐ.
init(collectionViewLayout: UICollectionViewLayout)
- ๊ฐ ์น์ ์ ํค๋์ ํธํฐ๋ฅผ ์ต์ ๋ ๊ฐ์ผ๋ก ํ์ฌ ๊ทธ๋ฆฌ๋๋ฅผ ๊ตฌ์ฑํจ
@MainActor class UICollectionViewFlowLayout : UICollectionViewLayout
- collection view layout ํ์
- flow layout์ collection view์ ๋ธ๋ฆฌ๊ฒ์ดํธ ์ค๋ธ์ ํธ์ ํจ๊ป ๋์ํ๋ฉฐ ๊ฐ ์น์ ์์ ์์ดํ (์ ), ํค๋, ํธํฐ์ ์ฌ์ด์ฆ๋ฅผ ๊ฒฐ์ ํ๋ ์ญํ์ ํจ
- ๋ธ๋ฆฌ๊ฒ์ดํธ ์ค๋ธ์ ํธ๋ UICollectionViewDelegateFlowLayout ํ๋กํ ์ฝ์ ๋ฐ๋ผ์ผ ํจ
- ๋ธ๋ฆฌ๊ฒ์ดํธ ๊ฐ์ฒด๋ ๋ ์ด์์ ์ ๋ณด๋ฅผ ๋ค์ด๋๋ฏนํ๊ฒ ์กฐ์ ํ ์ ์๊ฒ ํด์ค -> ๊ฐ๊ฐ์ ์ ํฌ๊ธฐ๋ฅผ ๋ค๋ฅด๊ฒ ์ค์ ํ ์ ์์
UICollectionViewLayout
- collection view์ ๋ ์ด์์ ์ ๋ณด๋ฅผ ์์ฑํ๊ธฐ ์ํ abstract base class
@MainActor class UICollectionViewLayout : NSObject
- ์ , ํธํฐ๋ ํค๋์ ๊ฐ์ supplementary views, collection view์ bounds ์์ ์๋ decoration views ๋ฐฐ์น๋ฅผ ๊ฒฐ์ ํ๋ฉฐ ์ด ์ ๋ณด๋ฅผ collectionView์๊ฒ ์๋ฆผ
์๋ธ ํด๋์ฑ
- layout ์ค๋ธ์ ํธ๋ ์ปฌ๋ ์ ๋ทฐ ์์ ์๋ ์์ดํ ์ ์์น, ์ฌ์ด์ฆ, visual state๋ฅผ ์ ์
- ๋ ์ด์์์ ์ํ ๋ทฐ๋ ์ปฌ๋ ์ ๋ทฐ์ ๋ฐ์ดํฐ ์์ค์ ์ํด์ ์์ฑ๋จ
- ์ : ์ฌ์ฉ์์ ์ํด selecting, dragging, reordering ๊ฐ๋ฅ. ์ปฌ๋ ์ ๋ทฐ๋ single group of cells๋ฅผ ๊ฐ์ง ์ ์๊ฑฐ๋ ์ ์ ์ฌ๋ฌ ์น์ ์ผ๋ก ๋ถ๋ฅ ํ ์ ์์
- supplementary views : (ํค๋์ ํธํฐ๊ฐ ์ฌ๊ธฐ์ ํด๋น) ์ ์ ์ ์ํด์ selected ๋ถ๊ฐ. ์ต์ ๋.
- decoration views : ๋ฑ์ง์ ๊ฐ์ ๋น์ฅฌ์ผ ์ ์ธ ์์. ์ปฌ๋ ์ ๋ทฐ์ ๋ฐ์ดํฐ์ ์ฐ๊ฒฐ๋์ด ์์ง ์์. supplementary view์ ๋ค๋ฅธ ํ์ ์ด๋ผ๊ณ ํ ์ ์์. ์ต์ ๋.
- ์ปฌ๋ ์ ๋ทฐ๋ ์ฌ๋ฌ ํ์ด๋ฐ์ elements๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ layout ์ค๋ธ์ ํธ์๊ฒ ์์ฒญํจ
- ๋ชจ๋ ์ ๊ณผ ์คํฌ๋ฆฐ์ ๋ํ๋๋ ๋ทฐ๋ ๋ ์ด์์ ์ค๋ธ์ ํธ๋ก ๋ถํฐ ๋ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ํ๋ฉด์ ๋ฐฐ์นํ๊ฒ ๋จ
Methods to Override
- ์ปฌ๋ ์ ๋ทฐ ์ปจํ ์ธ ์ ๋์ด์ ๋์ด
var collectionViewContentSize: CGSize { get }
- ์ง์ ๋ ๋ฒ์์ ๋ชจ๋ ์ ๊ณผ ๋ทฐ์ ๋ํ layout attributes.
func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]?
- ์ง์ ๋ indexPath์ ์๋ ํญ๋ชฉ์ ๋ํ ๋ ์ด์์ ์ ๋ณด๋ฅผ ํด๋น ์ ๊ณผ ํจ๊ป ๋ฐํ
func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes?
- ์๋ก์ด bounds์ ๋ ์ด์์ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ์ง ์ฌ๋ถ๋ฅผ ๋ ์ด์์ ๊ฐ์ฒด์๊ฒ ์์ฒญ
func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool
UICollectionViewLayoutAttributes๋
UICollectionViewLayout์ ์์ฑ๋ค์ UICollectionViewLayoutAttributes์ ์ธ์คํด์ค
์ฐธ๊ณ ์ฌ์ดํธ ๋ฐ ๋์
https://developer.apple.com/documentation/uikit/uicollectionviewlayout
https://developer.apple.com/documentation/uikit/uicollectionviewflowlayout
728x90
๋ฐ์ํ
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] MVVM ์์ฉํธ (0) | 2022.06.07 |
---|---|
[iOS/Swift] UICollectionView scroll animation (0) | 2022.06.06 |
[Swift] MVVM ๊ฐ๋จํ๊ฒ ์์๋ณด๊ธฐ (0) | 2022.06.04 |
[Swift/CoreAnimation] CABasicAnimation ์ด๋ (0) | 2022.06.02 |
[iOS/Swift] UICollectionView paging ๋์ปฅ ๊ฑฐ๋ฆฌ๋ ์ด์ ์์ ํ๊ธฐ (0) | 2022.06.01 |
๋๊ธ