๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SeSAC

[iOS] TIL_230802

by lizzydev 2023. 8. 5.

1. ์…€์— ๋žœ๋ค ์ƒ‰์ƒ ๋„ฃ๊ธฐ

 

์ƒ‰์ƒ ์„ ํƒ๋„๊ตฌ

Google์— ์žˆ์Œ

www.google.com

์…€ ์•ˆ์— ๋žœ๋ค ์ปฌ๋Ÿฌ ์ง€์ • ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด ์คŒ.

๋ฌธ์ œ : likeButton ๋ˆ„๋ฅด๋ฉด ์ƒ‰๊น”์ด ๊ณ„์† ๋ฐ”๋€œ;;

์ด์œ : ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๊ปด์„œ tableView.reloadData() ๋  ๋•Œ๋งˆ๋‹ค ๋ทฐ์˜ ์…€์ด ๋‹ค์‹œ ๋งŒ๋“ค์–ด ์งˆ๋•Œ๋งˆ๋‹ค ์ƒ‰์ƒ์ด ์ƒˆ๋กœ ๋ฝ‘ํž˜.

ํ•ด๊ฒฐ: ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋Š” struct์—์„œ ์ปฌ๋Ÿฌ๊ฐ’์„ ๋งŒ๋“ค๊ณ  ๊ฐ€์ง€๊ณ  ์žˆ์ž.

ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด์คŒ.

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋ง์ด ๋œธ.

ํ•จ์ˆ˜์— static ๋ถ™์—ฌ์„œ ํƒ€์ž… ๋ฉ”์„œ๋“œ๋กœ ๋ฐ”๊ฟ”์ค˜์„œ ํ•ด๊ฒฐ

์ธ์Šคํ„ด์Šค๋ฉ”์„œ๋“œ๋ž‘ static ํƒ€์ž… ๋ฉ”์„œ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค๋ฅธ ๊ณณ์— ์ €์žฅ ๋จ.

static์€ ํ”„๋กœ๊ทธ๋žจ ๋๋‚  ๋•Œ๊นŒ์ง€ ์‚ด์•„์žˆ์Œ

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ด์•„ ์žˆ์„ ๋•Œ๋งŒ ์กด์žฌ .

๋ทฐ์ปจ์—์„œ ํ•จ์ˆ˜ ๊ฐ€์ ธ๋‹ค ์“ธ ๋•Œ ํƒ€์ž…๋ฉ”์„œ๋“œ๋ผ ์ธ์Šคํ„ด์Šค ์•ˆ ๋งŒ๋“ค๊ณ  ๊ทธ๋ƒฅ ToDoInformation๊ตฌ์กฐ์ฒด ์ ‘๊ทผํ•ด์„œ ๋งŒ๋“ค๋ฉด ๋จ.

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์™€ ์…€์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ๋ฒ•

  1. sender.tag
    1. ๋‹ค๋ฅธ ๋ฒ„ํŠผ์ฒ˜๋Ÿผ ์ธ์‹ + ๊ฐœ๋ณ„ ๊ธฐ๋Šฅ
  2. delegate pattern (protocol)
  3. closure

๐Ÿ’กTip

struct๊ฐ™์€ ๋ชจ๋ธ์—๋Š” UIKit์„ import ์•ˆํ•˜๋Š”๊ฒŒ ์ข‹์Œ. (UI ์š”์†Œ ์•„์˜ˆ ์ œ๊ฑฐ)

UIKit ๋“ค์–ด๊ฐ„ ๋ชจ๋ธ

UIKit ์•ˆ ๋„ฃ์€ ๋ชจ๋ธ

ํ™”๋ฉด์ „ํ™˜ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ํ•˜๊ธฐ

๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐ›์„ ๋ทฐ์—์„œ๋Š” ์ „๋‹ฌ๋ฐ›์„ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ต์…”๋„๋กœ ์„ ์–ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๋Š” ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ ๋ฐ›์œผ๋ฉด viewDidLoad์—์„œ ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ

  • ์ „๋‹ฌ๋ฐ›๋Š” ๋ทฐ์ปจ

์…€ ํด๋ฆญํ•œ ํ›„ ์„ ํƒํ•œ ํ”์  ์—†์• ๋Š” ๋ฐฉ๋ฒ•

์…€ ์„ ํƒํ•ด์„œ ํ™”๋ฉด ์ „ํ™˜ ํ•œํ›„ ๋Œ์•„์˜ค๋ฉด ์…€ ์„ ํƒํ•œ ํšจ๊ณผ๊ฐ€ ๋‚จ์•„์žˆ์Œ

  1. select effect ์—†์• ๊ธฐ (๊ฐœ๋ฐœํ• ๋• ํŽธํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ๋ณ„๋ฃจ)
  2. ๋‹ค์Œ ํ™”๋ฉด ๋„์šด ํ›„์— reloadData() ํ•˜๊ธฐ

โš ๏ธreloadData๋Š” ํ…Œ์ด๋ธ”๋ทฐ ์ „์ฒด๋ฅผ reload

์•„๋ž˜์˜ ํ•จ์ˆ˜๋“ค์„ ์ด์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ reload ๊ฐ€๋Šฅ

์ด์ œ ํšจ๊ณผ ์•ˆ ๋‚จ์•„ ์žˆ์Œ.

2. awakeFromNib ์‚ฌ์šฉํ•˜๊ธฐ

๋ผ๋ฒจ ํฐํŠธ ์ƒ‰๊น”์ด๋‚˜ ์‚ฌ์ด์ฆˆ์ฒ˜๋Ÿผ ํ•œ๋ฒˆ๋งŒ ์„ค์ •ํ•  ๋‚ด์šฉ๋“ค์„ configureCell์— ๋„ฃ์œผ๋ฉด ๊ณ„์† ํ˜ธ์ถœ ๋จ. ํ•œ๋ฒˆ๋งŒ ํ•˜๊ณ  ์‹ถ์Œ

awakeFromNib์— ๋„ฃ๊ธฐ (ํ•œ ๋ฒˆ ๋งŒ ํ˜ธ์ถœ ๋จ)

awakeFromNib()

class func์— ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜๋‚จ . static ํ•จ์ˆ˜๋ผ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ๋„ฃ์„ ์ˆ˜ ์—†์Œ

class func : ๋ถ€๋ชจ์˜ static func ๊ฐ€์ ธ๋‹ค ์”€ (์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” class๋ž‘ ๋‹ค๋ฆ„)

class func awakeFromNib

jump to definition ์•ˆ ๋จ .

func awakeFromNib()

jump to definition

 

awakeFromNib() | Apple Developer Documentation

Prepares the receiver for service after it has been loaded from an Interface Builder archive, or nib file.

developer.apple.com

UIViewController์—์„œ CollectionView ๋งŒ๋“ค๊ธฐ

uiviewcontroller์—์„œ๋Š” collectionview ์š”์†Œ๋“ค ์ ‘๊ทผ์ด ์•ˆ ๋จ.

UICollectionView ์—ญํ• ๋“ค

์˜ค๋ฅธํŒ” : delegate (didselectitem~,didEndEditing~)

์™ผํŒ” : datasource(number of row ~, cellforitem~ )

→UICollectionViewController๋Š” ์ด๋ฏธ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ๋“ค, UIViewController๋Š” ์ถ”๊ฐ€ ์ฑ„ํƒํ•ด์ค˜์•ผ ํ•จ.

์ฑ„ํƒํ•˜๊ณ  fix ํ•ด์„œ ๋‚˜์˜จ ํ•จ์ˆ˜๋“ค ๊ตฌํ˜„ํ•ด์•ผ ํ•จ.

  1. ํ”„๋กœํ† ์ฝœ(ex.๋ถ€ํ•˜์ง์›): UICollectionViewDelegate,UICollectionViewDataSourc

  1. ์ปฌ๋ ‰์…˜๋ทฐ ์•„์›ƒ๋ ›

  1. ์ปฌ๋ ‰์…˜๋ทฐ์™€ ๋ถ€ํ•˜์ง์›์„ ์—ฐ๊ฒฐ : delegate = self (ํƒ€์ž…์œผ๋กœ์„œ ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ)

sectionInset

layout.sectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0) 

collectionview sectionInset ์ค„ ๋•Œ ์˜ค๋ฅธ์ชฝ์ด 0์ด์–ด์•ผ ์Šคํฌ๋กค ํ•œํ›„ ๋”ฑ ๋ถ™์–ด ์žˆ์–ด์„œ ๋‚ด์šฉ์ด ๋๋‚œ๋Š๋‚Œ

xib๋กœ ๋”ฐ๋กœ ๋งŒ๋“  ์…€์€ ๋“ฑ๋กํ•˜๋Š” ๋ถ€๋ถ„ ์žŠ์ง€๋ง๊ณ  ๋„ฃ๊ธฐ !!

ํ•œ ๋ฒˆ์— ๋‘๊ฐœ ์ปฌ๋ ‰์…˜๋ทฐ ๊ฐ™์€ ๋ ˆ์ด์•„์›ƒ ์ฃผ๊ธฐ

๊ฐ๊ฐ ๋”ฐ๋กœ ์ฃผ๊ธฐ

Tip๐Ÿ’ก

๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ํƒ€์ดํ‹€ default font size : 17

์ œ๋ชฉ์€ 15 ์ •๋„ ๋‚ด์šฉ๋ฌผ์€ 13์ •๋„

์—ฌ๋Ÿฌ ์ปฌ๋ž™์…˜ ๋ทฐ๋ฅผ ๊ฐ๊ฐ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ธฐ

numberOfItem~, cellForItem~ ์ด๋Ÿฐ ํ•จ์ˆ˜๋“ค ํ•œ๋ฒˆ๋ฐ–์— ํ˜ธ์ถœ ์•ˆ ๋จ.

→์ด ํ•จ์ˆ˜ ์•ˆ์—์„œ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ฝ”๋“œ ์งœ์•ผํ•จ.

์ปฌ๋ ‰์…˜๋ทฐ ์•„์ดํ…œ ๊ฐœ์ˆ˜ ์„ค์ •

์ปฌ๋ ‰์…˜๋ทฐ ์…€ ์„ค์ •

bestCollectionView.isPagingEnabled = true 

์ปฌ๋ ‰์…˜๋ทฐ ์…€ ์•ˆ์— ์ปฌ๋ ‰์…˜๋ทฐ, ํ…Œ์ด๋ธ”๋ทฐ ๊ฐ€๋Šฅ

ํ…Œ์ด๋ธ”๋ทฐ ์…€ ์•ˆ์— ์ปฌ๋ ‰์…˜๋ทฐ, ํ…Œ์ด๋ธ”๋ทฐ ๊ฐ€๋Šฅ

-> ๋Œ€์•ˆ์œผ๋กœ Compositional Layout ๋“ฑ์žฅ

 

 

'SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[iOS] TIL_230804  (0) 2023.08.06
[iOS] TIL_230803  (0) 2023.08.06
[iOS] TIL_230801  (0) 2023.08.03
[iOS] TIL_230731  (0) 2023.08.03
[iOS] TIL_230728  (0) 2023.08.01