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

๐ŸŒฑ SeSAC

(40)
[SeSAC] 220727 TIL ๋ทฐ์™€ ๋ฐ์ดํ„ฐ ๊ด€๋ จํ•œ ๊ฒƒ์€ ๋ถ„๋ฆฌํ•˜๋„๋ก ํ•˜์ž. ์—ญํ• ์„ ๋ถ„๋ฆฌํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์ž. UIViewController + UITableView UITableViewController๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์–ผ๋งˆ๋‚˜ ํŽธํ• ๊นŒ? ๊ทธ๋Ÿฌ๋‚˜ UITableViewController๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ข€ ๋” ์œ ์—ฐํ•œ ํ™”๋ฉด ๊ตฌ์„ฑ์ด ์–ด๋ ต๋‹ค. ์ด๋ฏธ ํ™”๋ฉด ์ „์ฒด๊ฐ€ ํ…Œ์ด๋ธ”๋ทฐ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์–ด ์˜์—ญ์˜ ํฌ๊ธฐ ์กฐ์ •์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (์ด ๋ง์ธ ์ฆ‰์Šจ RootView๊ฐ€ UITableView๋ผ๋Š” ๊ฒƒ์ด๋‹ค.) ๊ทธ๋ ‡๊ธฐ์— TableView๋งŒ ๋”ฐ๋กœ ์˜ฌ๋ ค์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ๋‹ค. TableView ์ƒ์„ฑ + ์•„์›ƒ๋ › ์—ฐ๊ฒฐ TableViewCell ์ƒ์„ฑ (ํ”„๋กœํ† ํƒ€์ž… ์…€, XIB ์ด์šฉ) + ์…€ ํด๋ž˜์Šค ์—ฐ๊ฒฐ + ์•„์›ƒ๋ › ์—ฐ๊ฒฐ TableView์— ํ•„์š”ํ•œ ํ”„๋กœํ† ์ฝœ ์„ ์–ธ..
[SeSAC] 220726 TIL ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”/ํƒญ ๋ฐ” bottom/top ๋ผ์ธ ๋””ํดํŠธ๋กœ ์ œ๊ณต๋˜๋Š” ์†์„ฑ์€ ์—†๋‹ค. ์ปค์Šคํ…€ ํ•ด์•ผ ํ•จ. ํ™”๋ฉด ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ ๋‹จ์ˆœํžˆ 2๊ฐœ๋งŒ ๋ถ„๊ธฐ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฐ’ ์ „๋‹ฌ๋กœ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ. ์žฌ์‚ฌ์šฉ๋˜๋Š” ํ™”๋ฉด์ด ๋งŽ์•„ ์ง„๋‹ค๋ฉด ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•ด์„œ ์ข€ ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Œ. ๋„ค๋น„๊ฒŒ์ด์…˜ ํƒ€์ดํ‹€ ์ปค์Šคํ…€ ํ•˜๋‚˜๋งŒ ํƒํ•ด๋ผ. ์• ํ”Œ ๊ฐ€์ด๋“œ๋ฅผ ์ง€ํ‚ค๊ฑฐ๋‚˜, ์•„์˜ˆ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜! ์• ํ”Œ์˜ ์‹œ์Šคํ…œ ํ˜•ํƒœ ๊ทธ๋Œ€๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ปค์Šคํ…€์ด ์‚ฌ์‹ค์ƒ ์–ด๋ ค์›€. ์ปค์Šคํ…€ ์˜์—ญ์€ UIView๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋‹ค ๋ฐ”๊พผ ๊ฒƒ์ด๋ผ๊ณ  ๋ณด์•„๋„ ๋ฌด๋ฐฉ. Navigation Title ๋ถ€๋ถ„์„ UIView๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Œ titleView ํ”„๋กœํผํ‹ฐ ์ด์šฉ ๋ผ๋ฒจ์— inset ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ…์ŠคํŠธ ์ขŒ์šฐ์— ์—ฌ๋ฐฑ์„ ๋„ฃ์–ด์„œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ ๊ธ€์ž ์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ ๊ณ ์ •์ ์ด๊ฑฐ๋‚˜ ์ผ์ •ํ•˜๋‹ค๋ฉด Co..
[SeSAC] 220725 TIL App Bundle, ipa .app bundle ์•ฑ ๋ฒˆ๋“ค์„ ์ด์šฉํ•œ ๋นŒ๋“œ์— ๋Œ€ํ•ด์„œ ์ง„์ž‘์— ์•Œ์•˜๋‹ค๋ฉด ์–ด๋• ์„๊นŒ? ์ด์ „์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด๋ฐ›์•„์„œ ์‚ฌ์šฉ์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ์žˆ์—ˆ๋Š”๋ฐ ํ”„๋กœ์ ํŠธ ํŒจํ‚ค์ง€ ์ธ๋ฑ์‹ฑ์„ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋ฐ˜๋‚˜์ ˆ ์ด์ƒ ์‹œ๊ฐ„์„ ์ผ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ๋˜๋Š” ์•ฑ ๋ฒˆ๋“ค์„ ๋ฐ›์•˜๋‹ค๋ฉด ์ข‹์•˜์„ํ…๋ฐ.. ๋ˆˆ๋ฌผ์ด ๋‚œ๋‹ค. .ipa iOS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„์นด์ด๋ธŒ ํŒŒ์ผ ๊ณ„์ •์ด ๋ถ™์–ด ์žˆ์Œ. Build ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(Option) ์‹ค์ œ ๊ธฐ๊ธฐ(๊ฐœ๋ฐœ์ž ๊ณ„์ • ํ•„์š”) Debug mode : ๊ฐœ๋ฐœ์šฉ Release mode : ์ถœ์‹œ Xcode ๋‹จ์ถ•ํ‚ค ๋‹จ์ถ•ํ‚ค๋Š” ์‹œ๊ฐ„๋‚  ๋•Œ ์ •๋ฆฌํ•ด์„œ ๋Œ์•„์™€์•ผ์ง€ option + cmd + [ , ] : ์ฝ”๋“œ ๋ธ”๋Ÿญ ์ด๋™ shift + control + ํด๋ฆญ : ๋‹ค..
[SeSAC] 220722 TIL ํ™”๋ฉด ์ „ํ™˜์—์„œ ํ—ท๊ฐˆ๋ฆด๋งŒํ•œ ์ง€์  ๋„ค๋น„๊ฒŒ์ด์…˜ ์Šคํƒ ๊ด€๋ฆฌ (์ฝ”๋“œ๋กœ ํ™”๋ฉด ์ „ํ™˜์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋†“์น˜๊ธฐ ์‰ฝ๋‹ค.) ๋„ค๋น„๊ฒŒ์ด์…˜ ์Šคํƒ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋‹ค๊ฐ€ ์ค‘๊ฐ„์— Present๋œ ๋ชจ๋‹ฌ์ด ๋‚˜์˜ค๋ฉด ์Šคํƒ์ด ๋Š๊ธฐ๊ฒŒ ๋œ๋‹ค. ์ค‘๊ฐ„์— ์ƒˆ๋กญ๊ฒŒ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ embedํ•ด์„œ ์ „ํ™˜์„ ์ด์–ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๊ณ , ์ด ์‹œ์ ๋ถ€ํ„ฐ๋Š” ์ƒˆ๋กœ์šด ๋„ค๋น„๊ฒŒ์ด์…˜ ์Šคํƒ์ด ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค. ์‹œ์ž‘์ ์˜ ์ค‘์š”์„ฑ (ํƒญ๋ฐ” ์ปจํŠธ๋กค๋Ÿฌ, ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ) ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ embed ํ•ด๋†“๋”๋ผ๋„ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ฃผ์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์›ํ•˜๋Š” ๊ตฌํ˜„์„ ํ•  ์ˆ˜ ์—†๋‹ค. ํ™”๋ฉด ์ „ํ™˜ํ•˜๋ฉด์„œ ๊ฐ’ ์ „๋‹ฌ ์ „๋‹ฌ ๋ฐ›์„ ํ™”๋ฉด์— ๊ณต๊ฐ„ ๋งŒ๋“ค๊ธฐ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๊ฐ€์ง€๊ณ  ๋ทฐ์— ํ‘œํ˜„ํ•˜๊ธฐ ํ™”๋ฉด ์ „๋‹ฌ ์‹œ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋‹ด์•„๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์šด ์บ์ŠคํŒ…์ด ํ•„์š”ํ•˜๋‹ค. (์šฐ๋ฆฌ๊ฐ€ ViewControl..
[SeSAC] 220721 TIL ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ (Optional Binding) ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ ์ฒ˜๋ฆฌ๋œ ์ƒ์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฆ„ if ~ let guard ~ let ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ vs ํƒ€์ž… ํ”„๋กœํผํ‹ฐ UIKit ์š”์†Œ๋Š” ๋ชจ๋‘ ํด๋ž˜์Šค์ด๋‹ค. ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ ๋’ค, ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฉค๋ฒ„๋กœ์„œ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž… ํ”„๋กœํผํ‹ฐ static ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์€ ํ”„๋กœํผํ‹ฐ๋Š” ์ธ์Šคํ„ด์Šค ์ž์ฒด์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜ ์ €์žฅ, ์—ฐ์‚ฐ, ๊ฐ์‹œ์ž ํ”„๋กœํผํ‹ฐ ์ดˆ๊ธฐํ™”, ํ•ด์ œ ํ™”๋ฉด์ด push ๋  ๋•Œ init(์ดˆ๊ธฐํ™”) ๋จ. ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ. ํ™”๋ฉด์ด pop ๋  ๋•Œ deinit ๋จ. ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ ค๊ฐ. ๋ฌธ์ž์—ด ๊ด€๋ฆฌ ํœด๋จผ์—๋Ÿฌ ๊ด€๋ฆฌ ์—ด๊ฑฐํ˜• ์—ด๊ฑฐํ˜•์€ ์ดˆ๊ธฐํ™” ๋ถˆ๊ฐ€ ์ธ์Šคํ„ด์Šค ์—†์Œ ๊ทธ๋ ‡๊ธฐ์— ๊ตฌ์กฐ์ฒด, ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ๊ณผ ๊ตฌ๋ถ„ ํ•„์š” ์ปดํŒŒ์ผ ์‹œ์ ์— ์—๋Ÿฌ ํƒ์ง€ ๊ฐ€๋Šฅ..
[SeSAC] 220720 TIL TableViewCell ๋ฐ์ดํ„ฐ ์„ค์ • Cell์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด CellForRowAt ๋ฉ”์„œ๋“œ ๋‹จ๊ณ„์—์„œ Cell์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋„ฃ์–ด์ค˜์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ํ•˜๋‚˜์”ฉ ๋‹ค ๋„ฃ์–ด์ฃผ๊ธฐ๊ฐ€ ์ •๋ง ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋น„ํšจ์œจ์ ์ธ ์ž‘์—…์ด ๋  ๊ฒƒ์ด๋‹ค. ์ด ์ž‘์—…์„ Cell์—๊ฒŒ ๋Œ€์‹  ๋ถ€์—ฌํ•ด์„œ ๋ฐ์ดํ„ฐ๋งŒ ํ†ต์งธ๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด Cell์ด ์•Œ์•„์„œ UI ์š”์†Œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋„๋ก ํ•˜๋ฉด ๊น”๋”ํ•ด์งˆ ๊ฒƒ์ด๋‹ค. ๋ฐ์ดํ„ฐ ์—ญ์‹œ ์ธ์ž๋กœ ํ•˜๋‚˜์”ฉ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๊ทธ ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ํž˜๋“ค ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌ์กฐ์ฒด ํ˜•ํƒœ๋กœ ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฌถ์Œ์œผ๋กœ ์ƒ๊ฐํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ํŽธํ•  ๊ฒƒ์ด๋‹ค. // Model Struct struct Movie { var titl..
[SeSAC] 220719 TIL TableView Row(ํ–‰) ๋†’์ด ์ผ๊ด„์ ์ธ ํ–‰ ๋†’์ด๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด, ์ „์ž์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์•„๋ณด์ธ๋‹ค. self.tableView.rowHeight = 80 // ์…€์˜ ๋†’์ด(์˜ต์…˜, ๋นˆ๋„ ๋†’์€) (feat. tableView.rowHeight) // ๋ฉ”์„œ๋“œ์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค. override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 100 } ์‚ผํ•ญ์—ฐ์‚ฐ์ž์˜ ์‚ฌ์šฉ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์ฒ˜์Œ ์•Œ๊ฒŒ ๋˜์—ˆ์„ ๋•Œ, ์ •๋ง ๋ชจ๋“  ๋ถ€๋ถ„์— ์ฝ”๋“œ๋ฅผ ๋‚จ์šฉํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ์˜คํžˆ๋ ค ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์•˜๊ณ , ์—ฌ๋Ÿฌ ์กฐ๊ฑด์ด ๊ฒน์ณ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค..
[SeSAC] 220718 TIL 1. ์•„์›ƒ๋ › ์ปฌ๋ ‰์…˜(Outlet Collection)์„ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ ๋‹จ์ˆœ ์š”์†Œ ๋ฐ˜๋ณต ๋˜๋Š” ๋™์ผํ•œ UI ๊ตฌ์„ฑ, ๋””์ž์ธ์  ์š”์†Œ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ ํ•ฉํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ดํ›„์— UI ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ ์ž ํ•  ๋•Œ ์–ด๋ ค์›€์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋””์ž์ธ์ ์ธ ๋ถ€๋ถ„๊ณผ ๋ฐ์ดํ„ฐ์ ์ธ ๋ถ€๋ถ„์€ ๋ถ„๋ฆฌ๊ฐ€ ๋” ์ ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ๊ฐ์ฒด์˜ ์„ ์–ธ ์œ„์น˜ (feat. DateFormatter) ํ•จ์ˆ˜ ๋‚ด๋ถ€ ํด๋ž˜์Šค ๋‚ด๋ถ€ ํŒŒ์ผ ์ „์ฒด 3. TableView Contents Static cell : ํ˜•์‹์ด ํ•ญ์ƒ ๋™์ผํ•จ Dynamic type : ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์ปจํ…์ธ ๊ฐ€ ๋‹ฌ๋ผ์ง, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฐฉ์‹์„ ์‚ฌ์šฉ View Header View Foo..