๊ฐœ๋ฐœ ์‹œํ–‰์ฐฉ์˜ค

[ iOS ์‹œํ–‰์ฐฉ์˜ค ] CollectionView์˜ Section ์ˆจ๊ธฐ๊ธฐ -CompositionalLayout

Forest Yun 2023. 3. 5. 14:19
728x90

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป๋ฐฐ๊ฒฝ๐Ÿ‘ฉ‍๐Ÿ’ป

์›๋ž˜ Section์ด ํ•œ ๊ฐœ์˜€๋˜ collection view๋ฅผ ๋‘ ๊ฐœ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์•„์ดํ…œ์ด ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด ๊ทธ๋ƒฅ ํ……- ๋นˆ ๊ณต๊ฐ„์ด ๋‚จ๊ฒŒ ๋˜์–ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ข‹์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•„ ์•„์ดํ…œ์ด ์—†์„ ๊ฒฝ์šฐ Section์„ ์ˆจ๊ธฐ๊ณ ์ž ๊ณ„ํšํ–ˆ๋‹ค.

 

 

 

 

 

How to deal  with empty items section

Section์„ ์ ‘๋Š” ๊ฑด ์ž์ฃผ ๋ณด์ด๋Š” ๊ธฐ๋Šฅ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ์ง€ ์•Š์„๊นŒ ๊ณต์‹๋ฌธ์„œ์„ ์—ด์‹ฌํžˆ ์ฐพ์•„๋ณด์•˜์ง€๋งŒ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ๋˜ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋ง์„ ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž์ฃผ ๋ดค๋˜ Section ์ˆจ๊น€ ๊ธฐ๋Šฅ์€ ๋ณดํ†ต TableView๋ฅผ ํ™œ์šฉํ•œ ๊ฒƒ์ด๊ฑฐ๋‚˜ FlowLayout์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ๋Š”๋ฐ, ๋‚˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ Section์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ๊ณ„ํš์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— CompositionalLayout์„ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ๋ฐฉ๋ฒ• ๋˜ํ•œ ์ ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ CompositionalLayout์„ ๊ฒ€์ƒ‰ํ•ด ์ฐพ์•„๋ดค๋Š”๋ฐ ์—ญ์‹œ ๋‚˜์™€๊ฐ™์€ ๊ณ ๋ฏผ์„ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์—ˆ๋‹ค.

 

How to deal with empty items section in UICollectionView CompositionalLayout
I'm trying to make collection view with compositional layout which have multi sections
but if there is empty items in sections how can I deal with it?
...

 

์—ฌ๊ธฐ์„œ ๋‚˜์˜จ ๋ฐฉ๋ฒ•๋“ค์€ collection View ์ž์ฒด๋ฅผ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ snapShot ์‚ฌ์šฉํ•˜๊ธฐ, ๋นˆ Section์„ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ•ด์„œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ•ด๋‹น Section์„ ์‚ญ์ œํ•˜๊ณ  ๋นˆ Section ๋„ฃ๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ ์ด ์ž‘์—…์€ ํ™”๋ฉด ๋กœ๋”ฉ์„ ๋งŽ์ด ํ•ด์•ผํ•ด์„œ ๋น„ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. ๋‚˜์ค‘์— Section ์ˆจ๊น€ ๋ฒ„ํŠผ๋„ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ธ๋ฐ ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ํšจ์œจ์ ์ผ๊นŒ ๊ณ ๋ฏผํ–ˆ๋‹ค.

 

 

 

Header ์ˆจ๊ธฐ๊ธฐ

๊ตฌ๊ธ€๋ง์„ ์—ด์‹ฌํžˆ ํ•˜๋ฉด์„œ Header๋ฅผ ์ˆจ๊ธฐ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋•Œ๋Š” ๊ฒ€์ƒ‰ ์ดˆ๋ฐ˜์ด๋ผ ๋„˜์–ด๊ฐ”๋Š”๋ฐ 'Section์€ ์ˆจ๊ธธ ์ˆ˜ ์—†๋‹ค'๋ผ๊ณ  ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฐ ๋’ค ํ•œ ๋ฒˆ collection view์˜ header์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด collection view์˜ supplemantary view์ด๋‹ค. 

collectionView(_:viewForSupplementaryElementOfKind:of:)
...
Alternatively, you can hide views by setting the isHidden property of the corresponding attributes to true or set the alpha property of the attributes to 0. To hide header and footer views in a flow layout, you can also set the width and height of those views to 0.

supplementary view๋ฅผ ์„ค์ •ํ•˜๋Š” DataSource ๋ฉ”์„œ๋“œ์˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ์ด view๋Š” ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ์•ŒํŒŒ ๊ฐ’์„ ์ด์šฉํ•ด ํˆฌ๋ช…๋„๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ณ  ์•„๋‹˜ ๋†’์ด๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์•„์ฃผ ๋‚ด๊ฐ€ ๋”ฑ ์›ํ•˜๋Š” ๋ฐ”์˜€๋‹ค! ์ด์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒ ๊ตฌ๋‚˜ ์ƒ๊ฐํ•˜๊ณ  CompositionalLayout์„ ์‚ฌ์šฉํ•˜์—ฌ Header๋ฅผ ์„ค์ •ํ–ˆ๋Š”๋ฐ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๋‚˜๋Š” ๊ฐ€๋กœ๋กœ paging๋˜๋Š” collection์„ ๊ตฌํ˜„ํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. 

 

 

 

Supplementary view์˜ ๋ชฉ์ 

supplementary view๋Š” ์ •๋ง ๊ทธ๋ƒฅ view์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ™”๋ฉด์— UILabel, UICollectionView ๋“ฑ์„ ๋„ฃ์„ ๋•Œ view์— addSubViewํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ supplementary view๋„ ๊ทธ์ € view์˜€๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ™”๋ฉด์„ ์–ป์œผ๋ ค๋ฉด supplementary view์— collectionView๋ฅผ ํ• ๋‹นํ•ด์•ผํ–ˆ๋‹ค. ๋„ฃ๋Š”๊ฑฐ์•ผ ๊ฐ„๋‹จํ•œ ์ผ์ด์ง€๋งŒ ๋‚˜๋Š” ์•„์ดํ…œ์„ ์„ ํƒํ•˜๋ฉด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ, supplementary view๊ฐ€ ์ •๋ง ๊ทธ๋Ÿฌํ•œ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์š”์†Œ์ผ๊นŒ ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  self.present() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๋ฐ self๋Š” UIView๊ฐ€ ์•„๋‹ˆ๋ผ ViewController์—ฌ์•ผ ํ•œ๋‹ค. ๋ฌผ๋ก  UITapGesture๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  self๋ฅผ ์œ„์ž„ํ•˜๋Š”(์ž˜ ๋ชจ๋ฅธ๋‹ค) ๋“ฑ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•˜๋ฉด ๊ตฌํ˜„์ด์•ผ ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๊ณผ์—ฐ Supplementary view๊ฐ€ ๊ทธ๋Ÿฌํ•œ ์˜๋„๋ฅผ ๊ฐ€์ง€๊ณ  ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ผ๊นŒ?

 

UICollectionViewLayout
supplementary view๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์„ ํƒ๋  ์ˆ˜๋Š” ์—†๋‹ค. supplementary view๋“ค์€ ์ฃผ์–ด์ง„ ์„น์…˜ ๋˜๋Š” ์ „์ฒด collection view์— ๋Œ€ํ•œ header์™€ footer๊ฐ™์€ ๊ฒƒ๋“ค์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. 
...

๊ทธ ๋•Œ๋Š” ์ถ”์ธก๋งŒ ํ•  ๋ฟ ํ™•์‹คํ•˜์ง€ ์•Š์€ ์ƒํƒœ์˜€๋Š”๋ฐ, ๋‚˜์ค‘์— ๊ทผ๊ฑฐ๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด UICollectonViewLayout ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฝ์–ด๋ณด๋ฉฐ ํ™•์‹ ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์„ ๋ณด๋ฉด sepplementary view๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์ผ ๋ฟ ์„ ํƒ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” view๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋”ํ•˜์ž๋ฉด collection view์˜ ์š”์†Œ์—๋Š” cell, sepplementary view, decoratyion view๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ์ค‘ ์„ ํƒ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ์š”์†Œ๋Š” cell ๋ฟ์ด๋‹ค.

 

 

 

 

๋‹ค์‹œ Section ์„ ์ˆจ๊ฒจ๋ณด์ž

๋‹ค์‹œ ์›์ ์œผ๋กœ ๋Œ์•„์™€ Section ์ˆจ๊ธฐ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค. section์˜ ๊ทธ ๋นˆ๊ณต๊ฐ„์€ ์•„์ดํ…œ์˜ content ํฌ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ CompositionalLayout์„ ๊ตฌ์„ฑํ•  ๋•Œ ์„ค์ •ํ•œ group์™€ inset ๊ฐ’์ด์—ˆ๋‹ค. ์ด๊ฑธ ๋•Œ์— ๋งž๊ฒŒ 0์œผ๋กœ ๋งŒ๋“ค๋ฉด ๋˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ collectionLayout์„ numberOfSection ๋ฉ”์„œ๋“œ์—์„œ ์žฌํ• ๋‹นํ•ด์ฃผ์—ˆ๋Š”๋ฐ ์Šค๋ ˆ๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋‹น์‹œ์—๋Š” ์™œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋Š”์ง€ ๋ชฐ๋ž์ง€๋งŒ ์ถ”ํ›„์— ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ณต์‹๋ฌธ์„œ์—์„œ ์ฝ๊ฒŒ ๋˜์—ˆ๋‹ค.

UICollectionViewLayout
๋ ˆ์ด์•„์›ƒ ๊ฐ์ฒด๋Š” ๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ collection view ์•ˆ์—์„œ ์•„์ดํ…œ๋“ค์˜ ์œ„์น˜์™€ ํฌ๊ธฐ, ์‹œ๊ฐ์  ์ƒํƒœ๋ฅผ ์ •์˜ํ•œ๋‹ค. ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•ด ๋ทฐ๋“ค์€ collection view์˜ data source์— ์˜ํ•ด ์ƒ์„ฑ๋œ๋‹ค.

๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋ ˆ์ด์•„์›ƒ ๊ฐ์ฒด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ Data Source์— ์˜ํ•ด cell๊ณผ ๊ฐ™์€ view๋“ค์ด ์ƒ์„ฑ๋œ๋‹ค. ๋”ฐ๋ผ์„œ Data Source์˜ ๋ฉ”์„œ๋“œ์ธ numberOfSection์—์„œ ๋ ˆ์ด์•„์›ƒ ๊ฐ์ฒด๋ฅผ ๋‹ค์‹œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ž‘์—…์ด๋‹ค. 

 

 

 

Section ์ˆจ๊ธฐ๊ธฐ ํ•ด๊ฒฐ

์œ„์˜ ๊ณผ์ • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ •๋ง ๋งŽ์€ ์ฝ”๋“œ ๊ตฌ์ƒ์„ ํ•ด๋ดค์ง€๋งŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์กฐ๊ธˆ ์•„์‰ฝ์ง€๋งŒ ํƒ€ํ˜‘์„ ํ•ด์„œ ์‚ญ์ œ ์งํ›„์—๋Š” ๋นˆ ๊ณต๊ฐ„์ด ๋ณด์ด์ง€๋งŒ ํ™”๋ฉด ์ „ํ™˜ํ•˜๊ณ  ๋‹ค์‹œ ๋Œ์•„์˜ค๋ฉด ๋นˆ ๊ณต๊ฐ„์ด ๋ณด์ด์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ๋‹ค. ๋ฐ”๋กœ Section์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋‘ ๊ฐœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๊ตฌ๊ธ€๋งํ•ด์„œ ๋‚˜์˜จ ์˜๊ฒฌ ์ค‘ Section์„ ์‚ญ์ œํ•˜๊ณ  ๊ต์ฒดํ•˜๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋ผ๋Š” ์˜๊ฒฌ์ด ์žˆ์—ˆ๋Š”๋ฐ, Section ์ž์ฒด๋ฅผ ๊ต์ฒดํ•˜๊ธฐ ๋ณด๋‹ค๋Š” Section์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฑด ์–ด๋–จ๊นŒ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. Compositional Layout์€ ์•„์ดํ…œ์„ ๊ตฌ์„ฑํ•˜๊ณ  ๊ทธ๋ฃน์— ํ• ๋‹นํ•˜๊ณ , ๊ทธ๋ฃน์„ ๊ตฌ์„ฑํ•˜๊ณ  ์„น์…˜์— ํ• ๋‹นํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์„น์…˜์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ ˆ์ด์•„์›ƒ์— ํ• ๋‹นํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊น ๋นˆ ์„น์…˜ ๋ ˆ์ด์•„์›ƒ์„ ํ•˜๋‚˜ ๊ตฌ์„ฑํ•ด์„œ ๋งŒ์•ฝ ์•„์ดํ…œ์ด ์—†์œผ๋ฉด ๋นˆ ์„น์…˜ ๋ ˆ์ด์•„์›ƒ์„, ํ•˜๋‚˜ ์ด์ƒ์ด๋ฉด ๊ธฐ์กด ์„น์…˜ ๋ ˆ์ด์•„์›ƒ์„ ํ• ๋‹นํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ž‘์—…์„ ๋งˆ์น˜๊ณ  ๊ธฐ๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜๋‹ˆ ์ •๋ง ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค. ์‚ญ์ œ ์งํ›„์—๋„ ์•„์ฃผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋นˆ ๊ณต๋ฐฑ์ด ์‚ฌ๋ผ์กŒ๋‹ค.

 

 

 

 

 

์™œ Section์ด ์ˆจ๊ฒจ์ง„ ๊ฑธ๊นŒ?

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐ”๊ฐ€ ์ž˜ ๊ตฌํ˜„๋ผ์„œ ๊ธฐ๋ปค์ง€๋งŒ ์ด์œ ๊ฐ€ ์ •๋ง ๊ถ๊ธˆํ–ˆ๋‹ค. ์™œ ๋˜๋Š” ๊ฑด์ง€ ์˜๋ฌธ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ Collection View์˜ ๊ตฌ์„ฑ ๊ณผ์ •์„ ํŒŒ์•…ํ•˜๊ณ ์ž ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ ๋ฐ ๋ ˆ์ด์•„์›ƒ์ด ์„ค์ •๋˜๋Š” ๊ณณ์— print๋ฌธ์„ ์ถœ๋ ฅํ•ด๋ดค๋‹ค. ๊ทธ ๊ฒฐ๊ณผ collection layout์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์žฌ๊ตฌ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ํ˜ธ์ถœ๋˜์–ด collection view์˜ ๋ ˆ์ด์•„์›ƒ์„ ์žฌ์„ค์ •ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ญ์ œ ์งํ›„์—๋„ ํ•ด๋‹น ์„น์…˜์˜ ๋ ˆ์ด์•„์›ƒ์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์ด๋‹ค.

๋ ˆ์ด์•„์›ƒ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋œ ๊ณผ์ •์ด ์˜๋„๋œ ๊ฒƒ์ธ์ง€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ collection view์˜ layout ํ”„๋กœํผํ‹ฐ๋ฅผ ์‹œ์ž‘์œผ๋กœ ํƒ€๊ณ  ํƒ€๊ณ  ๊ฐ€ UICollectionViewLayout ๋ฌธ์„œ๋ฅผ ์ฝ๊ฒŒ ๋˜์—ˆ๋‹ค.

UICollectionViewLayout
collection view๋Š”  collection view์˜ ๋ ˆ์ด์•„์›ƒ ๊ฐ์ฒด์— ์—ฌ๋Ÿฌ ๋ฒˆ collection view ์š”์†Œ์— ๋Œ€ํ•œ ๋ ˆ์ด์•„์›ƒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์š”์ฒญํ•œ๋‹ค. ... ์œ ์‚ฌํ•˜๊ฒŒ ์•„์ดํ…œ์ด collection view์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์•„์ดํ…œ๋“ค์— ๋Œ€ํ•ด ์ถ”๊ฐ€์ ์ธ ๋ ˆ์ด์•„์›ƒ ์ „๋‹ฌ์ด ๋ฐœ์ƒํ•œ๋‹ค.
...
collection view์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ•˜๊ณ  ์•„์ดํ…œ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ, collection view์€ collection view์˜ ๋ ˆ์ด์•„์›ƒ ๊ฐ์ฒด๊ฐ€ ๋ ˆ์ด์•„์›ƒ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ์š”์ฒญํ•œ๋‹ค. ํŠนํžˆ ์˜ฎ๊ฒจ์ง€๊ฑฐ๋‚˜ ์ถ”๊ฐ€, ์‚ญ์ œ๋œ ๋ชจ๋“  ์•„์ดํ…œ๋“ค์€ ์ƒˆ๋กœ์šด ์œ„์น˜๋ฅผ ๋ฐ˜์˜ํ•œ ์—…๋ฐ์ดํŠธ๋œ collection view์˜ ๋ ˆ์ด์•„์›ƒ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์œ„์™€ ๊ฐ™์€ ๋‚ด์šฉ์ด ๋‚˜์™€์žˆ๋‹ค. ์ •๋ง ๋ ˆ์ด์•„์›ƒ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋˜์–ด ๋ณ€๊ฒฝ๋œ ๋ ˆ์ด์•„์›ƒ์„ collection view์— ๋ฐ˜์˜ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณต์‹๋ฌธ์„œ์˜ ๋‚ด์šฉ์„ ๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ section์„ ์ˆจ๊ธฐ๋Š” ๋ฐฉ๋ฒ•์ด ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์ธ ๊ฒƒ ๊ฐ™๋‹ค

 

 

 

๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒฝํ—˜ํ•˜๋ฉฐ UICollectionViewLayout ๋ฌธ์„œ๋ฅผ ์ฒ˜์Œ ์ฝ์–ด๋ดค๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋‹ˆ collection view๋Š” ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ดค๋Š”๋ฐ UICollectionView ๋ฌธ์„œ๋Š” ํ•œ ๋ฒˆ๋„ ์ฝ์–ด๋ณด์ง€ ์•Š์•˜๋‹ค. ๊ฐ€๋” ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฐœ์ทŒํ•ด ์ฝ์—ˆ๋Š”๋ฐ ๋งŒ์•ฝ ๋ฏธ๋ฆฌ ์ฝ์–ด๋ดค์œผ๋ฉด ๋” ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์ง€ ์•Š์„๊นŒ ์•„์‰ฌ์›€์ด ๋“ค๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋ž˜๋„ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ๋ฌธ์„œ๋ฅผ ์ฝ์œผ๋ฉด ๋” ์ž˜ ์ดํ•ด๊ฐ€ ๋˜๋Š” ์ข‹์€ ์ ์ด ์žˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ฏธ๋ฆฌ ์ฝ์–ด๋„ ๋ณด๊ณ  ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๋•Œ ์ฐพ์•„๋„ ๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ํ•จ๊ป˜ ํ•ด์•ผ๊ฒ ๋‹ค.

collection view๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ดค์ง€๋งŒ ๋ณต์žกํ•œ UI๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑด ์•„์ง ์–ด๋ ค์›Œ ์ผ๋ถ€๋Ÿฌ Section์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๊ณ ์ž ํ–ˆ๋‹ค. ์ด ํ™”๋ฉด์„ ๋งŒ๋“ค๋ฉด์„œ Section ์ˆจ๊ธฐ๊ธฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์—ˆ๋Š”๋ฐ ์ •๋ง ์–ป์€ ๊ฒƒ๋„ ๋งŽ์•˜๋‹ค. ์•ž์œผ๋กœ  ์กฐ๊ธˆ ๋” ๋ณต์žกํ•œ UI๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ๋ ˆ์ด์•„์›ƒ ์—ฐ์Šต์„ ํ•˜๊ณ  ์‹ถ๋‹ค.

์ด๋ฒˆ ๊ธฐ๋Šฅ์€ ๊ทธ์ € ์‹œํ–‰์ฐฉ์˜ค๋กœ๋งŒ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๊ธฐ๋Šฅ์„ ์ •๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ธ€๋กœ ๋งŒ๋“ค ์˜ˆ์ •์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜์”ฉ ๋‚ด ์ง€์‹์ด ์Œ“์—ฌ๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์•„ ์ข‹๋‹ค.

 

 

 

728x90