๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS138

[iOS/UI] ์ปค์Šคํ…€ XIB UIView ์ ์šฉํ•ด๋ณด๊ธฐ (UITableView,UICollectionView ํฌํ•จ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์š”์ฆ˜ ๋“ค์–ด ๋‚ ์”จ ๋„์šฐ๊ธฐ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. ์Šคํฌ๋กค๋ทฐ์— ์ปค์Šคํ…€ํ•œ UIView๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด์„œ xib๋กœ ๋”ฐ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์žก์•„์„œ ๋งŒ๋“ค๊ณ  ์ ์šฉํ–ˆ๋Š”๋ฐ์š”. ์ด ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋†“๊ณ  ๊ณต์œ ํ•ด๋“œ๋ฆฌ๊ณ  ์‹ถ์–ด์„œ ๊ธ€์„ ์ ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview ์ œ๊ฐ€ ๋งŒ๋“ค๊ณ ์‹ถ์€ ํ™”๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ScrollVIew ์œ„์— ์ปค์Šคํ…€ํ•œ UIView๋ฅผ ์–น์–ด์„œ ์Šคํฌ๋กค์ด ์ขŒ์šฐ๋กœ ๋˜๊ฒŒ๋” ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. UIView์—๋Š” ํ…Œ์ด๋ธ”๋ทฐ์™€ ์ปฌ๋ ‰์…˜๋ทฐ๋„ ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € WeatherView๋ผ๋Š” UIView Swift ํŒŒ์ผ๊ณผ xib ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. xib ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฒ•์€ new File์—์„œ User Interface์—์„œ View๋ฅผ ๊ณจ๋ผ์ฃผ์‹œ๊ณ  ์ƒ์„ฑํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. Xib xibํŒŒ์ผ์—์„œ ์›ํ•˜์‹œ๋Š” ๋ ˆ์ด์•„์›ƒ์„ .. 2021. 2. 18.
[iOS/UI] Swift ์Šคํฌ๋กค๋ทฐ๋กœ ์ด๋ฏธ์ง€ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๋„˜๊ธฐ๊ธฐ(Image Paging with UIScrollView) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!! ์˜ค๋Š˜์€ ์Šคํฌ๋กค๋ทฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊ฑด๋ฐ์š”. ํ‰์†Œ์—๋Š” ์ปฌ๋ ‰์…˜๋ทฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ์ด๋ฏธ์ง€ ํŽ˜์ด์ง•์„ ํ–ˆ์—ˆ๋Š”๋ฐ ์Šคํฌ๋กค๋ทฐ๋กœ ํ•˜๋Š”๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•œ๊ฑฐ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Storyboard ๋จผ์ € ๋‹ค์Œ๊ณผ ๊ฐ™์ด scrollView ์„ธํŒ…ํ•˜๊ณ  ์Šคํฌ๋กค๋ทฐ ์•„๋ž˜์ชฝ์— pageControl๋„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”! PageControl์€ ์Šคํฌ๋กค๋ทฐ ๋ฐ”๊นฅ์ชฝ์— ์œ„์น˜ํ•˜๊ฒŒ ์„ธํŒ…ํ•ด์ฃผ์„ธ์š”! ๊ทธ๋ฆฌ๊ณค ์Šคํฌ๋กค๋ทฐ๋ฅผ ํด๋ฆญํ•˜์…”์„œ Scrolling - Paging Enabled๋ฅผ ์ฒดํฌํ•ด์ฃผ์„ธ์š”. ViewController ์ด์ œ ViewController๋กœ ์ด๋™ํ•˜์…”์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์„ค์ •ํ•ด์ฃผ์—ˆ๋˜ ์Šคํฌ๋กค๋ทฐ์™€ ํŽ˜์ด์ง€์ปจํŠธ๋กค์„ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค! @IBOutlet wea.. 2021. 2. 17.
[iOS]Swift๋กœ ์—‘์…€ํŒŒ์ผ ํŒŒ์‹ฑํ•ด์„œ ํ…Œ์ด๋ธ”๋ทฐ์— ๋„์šฐ๊ธฐ(Parse Excel with Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ‰์†Œ์— ์—‘์…€์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ• ์ˆ˜ ์—†์„๊นŒ? ๋ฅผ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ์—‘์…€์„ ํŒŒ์‹ฑํ•˜๋Š”๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ๊ฒŒ๋ผ์„œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Excel ๋จผ์ € Excel ํŒŒ์ผ์ธ .csv ํŒŒ์ผ์„ ์ค€๋น„ํ•ด์ฃผ์„ธ์š”! ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ผ์™€ ๋„์‹œ ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋ผ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ์—‘์…€์ •๋ณด๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. (ํ˜น์‹œ ํ•„์š”ํ•˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•ด๋†“๊ฒ ์Šต๋‹ˆ๋‹ค!) Xcode ์ด ํŒŒ์ผ์„ Xcode ํ”„๋กœ์ ํŠธ ์•ˆ์— ๋„ฃ์–ด์ฃผ์„ธ์š”! ๊ทธ๋Ÿฌ๋ฉด ์—‘์…€์•ˆ์— ์žˆ๋Š” ์ •๋ณด๋“ค์ด Xcode ์•ˆ์—์„  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Storyboard ๋‚˜๋ผ์ด๋ฆ„๊ณผ ๋„์‹œ๋ฅผ ๋„์šธ ํ…Œ์ด๋ธ”๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ค์‹œ๋‹ค! ํ…Œ์ด๋ธ”๋ทฐ์…€์—์„œ Style์„ Subtitle๋กœ ๋ฐ”๊พธ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋™์œผ๋กœ Title๊ณผ Subtitle์ด .. 2021. 2. 15.
[iOS/UI] ํ‚ค๋ณด๋“œ ์œ„์— ๋ฒ„ํŠผ๋‹ฌ๊ธฐ(add custom buttons above Keyboard) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!! ํ‚ค๋ณด๋“œ ์ž…๋ ฅํ• ๋•Œ ํ‚ค๋ณด๋“œ๋ฅผ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ํ• ๋•Œ ํ‚ค๋ณด๋“œ ์œ„์— done๋ฒ„ํŠผ์ด๋‚˜ ์•„๋‹ˆ๋ฉด ํ‚ค๋ณด๋“œ ์•„๋ž˜์žˆ๋Š” ๋ฒ„ํŠผ์„ ๋ณด๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด์„œ ๋ฒ„ํŠผ์ด ํ‚ค๋ณด๋“œ ์œ„๋กœ ๋”ฐ๋ผ์˜ค๋Š” ๋“ฏํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์„ํ…๋ฐ ๋ฐ”๋กœ ์˜ค๋Š˜์€ ํ‚ค๋ณด๋“œ ์œ„์— ์ด์ „๊ณผ ๋‹ค์Œ ๋ฒ„ํŠผ์„ ๋„ฃ์–ด๋ณผ๊ฑฐ์—์š”! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~Storyboard ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ํ…์ŠคํŠธํ•„๋“œ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ViewController ์œ„์—์„œ ๋งŒ๋“ค์–ด์ค€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. ๋ฐ”๋กœ UIToolbar๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๋Š”๋ฐ์š”. ์ด์ œ ์—ฌ๊ธฐ์— ๋„ฃ์–ด์ค„ ๋ฒ„ํŠผ๋“ค์ด ํ•„์š”ํ•˜๊ฒ ์ฃ ? ๋ฐ”๋กœ ์ด์ „๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๋ฒ„ํŠผ๋„ ๋˜‘๊ฐ™์ด ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. ์ด๋ ‡๊ฒŒ ๋ฒ„ํŠผ์„ ๋งŒ๋“œ์…จ์œผ๋ฉด ๋ฐ”๋กœ ํˆด๋ฐ”์— ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š๋ƒ? ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํˆด๋ฐ”์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์•„์ดํ…œ๋“ค์€ UIBarButtonItem๋งŒ .. 2021. 1. 22.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] KVO๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ iOS๋ฉด์ ‘์งˆ๋ฌธ์— ์ž์ฃผ ๋‚˜์˜ค๋Š” KVO์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. KVO๋ž€? ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์„ํ•ด๋ณด๋ฉด KVO๋Š” Key Value Observing์˜ ์ค„์ž„๋ง์ด๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”์ฝ”์•„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์ด๋ผ๊ณ  ํ•˜๋„ค์š”. ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„ willSet๊ณผ disSet์ด๋ž‘ ์œ ์‚ฌํ•˜์ง€๋งŒ ์™ธ๋ถ€์— ๊ด€์ฐฐ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ๊ด€์ฐฐํ•˜๊ณ  ์‹ถ์€ ๊ฐ์ฒด์— ์˜ต์ €๋ฒ„๋ฅผ ๋‹ฌ๊ณ  ๊ทธ ๊ฐ’์ด ๋ณ€ํ• ๋•Œ ๋ฐ”๋€Œ๊ธฐ์ „ ๊ฐ’์ด๋ž‘ ๋ฐ”๋€๊ฐ’์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• KVO๋Š” Objective-C ๋Ÿฐํƒ€์ž„์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋กœ ์•ž์— @objc dynamic๊ฐ€ ๋ถ™์€ NSObject Class๋กœ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € Swift 4 ์ด์ „์—๋Š” ์–ด๋–ป.. 2020. 12. 29.
[Library] ReactiveX์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์ €๋„ ์š”์ฆ˜์— RxSwift๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. RxSwift์—์„œ Rx๋ฅผ ํ‘œํ˜„ํ•˜๋Š” Reactive eXtension์— ๋Œ€ํ•ด์„œ ๋จผ์ € ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์— ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Reactive X๋ž€? Microsoft์—์„œ "Volta" ๋ผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์— ๋งŒ๋“ค์–ด์ง„ API์ž…๋‹ˆ๋‹ค. Reactive X๋ฅผ ํ•œ๋งˆ๋””๋กœ ์ •์˜ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. "๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ํ๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ API" ๋˜ํ•œ ์˜ต์ €๋ฒ„ ํŒจํ„ด๊ณผ ๋ฐ˜๋ณต์ž ํŒจํ„ด์„ ํ•ฉ์ณ๋†“์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฑ์—”๋“œ ์–ด๋””์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  JavaScript,Swift,Python ์–ด๋Š ํ”Œ๋žซํผ์ด๋“ ์ง€ ๊ต์ฐจ๊ฐ€ ์‰ฝ๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ ํ•˜๋„ค์š”. ์žฅ์  4๊ฐ€์ง€๋กœ ๋งํ•  ์ˆ˜ ์žˆ์Šต.. 2020. 12. 24.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] Delegate๋Š” retain์ด ๋ ๊นŒ? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” Delegate๋Š” retain์ด ๋ ๊นŒ? ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ์ œ๋Š” ๋จผ์ € ์ง€๋‚œ ์‹œ๊ฐ„์— ๋‹ค๋ค˜์—ˆ๋˜ Delegate์™€ Protocol ๊ทธ๋ฆฌ๊ณ  Retain Cycle์ด๋ž€? ์„ ๋ณด๊ณ  ์˜ค์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”! ๊ทธ๋Ÿผ ๋ฐ”๋กœ ์‹œ์ž‘ํ•ด๋ณผ๊ฒŒ์š”~ Class-Ony-Protocol ๋จผ์ € Retain์€ ์ €๋ฒˆ ์‹œ๊ฐ„์— ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋ƒˆ์„๋•Œ ์ฆ‰ ์ธ์Šคํ„ดํ™”๋ฅผ ์‹œ์ผœ์ค„๋•Œ ์ƒ๊ธด๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Delegate๋Š” Protocol์„ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์ด๊ณ  Protocol์€ Class๊ฐ€ ์•„๋‹ˆ๋‹ˆ๊น Retain์ด ๋˜์ง€ ์•Š๋Š”๊ฑฐ๊ฒ ์ง€ ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค์—์„œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•  ๋•Œ๋Š” Class - Only - Protocol ์ด๋ผ๋Š” ํด๋ž˜์Šค ์ „์šฉ ํ”„๋กœํ† .. 2020. 12. 23.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] GCD๋ž€? - ๊ฐœ๋… ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” GCD(Grand Central Dispatch)์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Multi Threading ๋จผ์ € GCD ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„  ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์•Œ๊ณ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด GCD ๊ฐ€ ์• ํ”Œ์—์„œ ์ œ๊ณตํ•˜๋Š” API์ธ๋ฐ ์ด๊ฒƒ์€ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ธ๋ฐ์š”. ์™œ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ๊ฐ€ ํ•„์š”ํ• ๊นŒ์š”? ๋ณดํ†ต์˜ ์ž‘์—…๋“ค์€ ๋Œ€ํ‘œ์ ์œผ๋กœ UI๊ด€๋ จ ์ž‘์—…๋“ค์€ ๋ฉ”์ธ์“ฐ๋ ˆ๋“œ์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ˆœ์ฐจ์ (sync)์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์ฃ . ํ•˜์ง€๋งŒ ์ˆœ์„œ์—†์ด ๋™์‹œ(async)์— ์ด๋ค„์ ธ์•ผ ํ•  ๊ฒƒ๋“ค์ด ์žˆ์ฃ ? ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ๊ฐ™์€ ๊ฒฝ์šฐ ๋™์‹œ์— ๋‹ค์šด๋กœ๋”ฉ์„ ์‹œ์ž‘ํ•ด์„œ ๋จผ์ € ๋๋‚œ ์ด๋ฏธ์ง€๋Š” .. 2020. 12. 18.
[iOS/UI] UITableView๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ํ…Œ์ด๋ธ”๋ทฐ์ž…๋‹ˆ๋‹ค. iOS ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๊ฑฐ์˜ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํด๋ž˜์Šค์ด์ฃ . ๊ทธ๋™์•ˆ ์ œ๊ณต๋˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋Œ€์ถฉ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์˜ค๋Š˜์€ ์ง„์งœ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ธ์„ธํ•˜๊ฒŒ ๋ณด๋ฉด์„œ ์•Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. UITableView ๊ณต์‹ ๋ฌธ์„œ์—๋Š” "๋‹จ์ผ ์—ด์— ๋ฐฐ์—ด๋œ ํ–‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ทฐ" ๋ผ๊ณ  ๋˜์–ด์žˆ๋„ค์š”. ๋˜ํ•œ UIScrollView ์— ์ƒ์†๋ฐ›๊ณ  ์žˆ์œผ๋ฏ€๋กœ Scroll์ด ๋‹น์—ฐํžˆ ๊ฐ€๋Šฅํ•˜๊ณ  Scroll ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ๋“ค๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Data Source ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค ๋ฉ”์†Œ๋“œ๋Š” numberOfSections ์™€ numberOfRowsInSection ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. numberOfSections ์€ ์„น์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ numberOfRowsInSection.. 2020. 12. 16.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] ์ œ๋„ค๋ฆญ์ด๋ž€? (Swift Generic) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ์ œ๋„ˆ๋ฆญ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๋„ˆ๋ฆญ์„ ๋“ค์–ด๋ณด๊ธฐ๋งŒํ•˜๊ณ  ์ œ๋Œ€๋กœ ์•Œ์•„๋ณด๋Š”๊ฑด ์ด๋ฒˆ์ด ์ฒ˜์Œ์ธ๋ฐ ์ •๋ง ์œ ์šฉํ•œ ๋…€์„์ด๋ผ์„œ ๊ณต์œ ๋“œ๋ฆด๋ ค๊ณ  ํ•ด์š”! ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Generic ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•˜๋„ค์š”. ์‹ค์ œ๋กœ Swift์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ผ๋Š” ํƒ€์ž…์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„ ์„ค๋ช…๋งŒ์œผ๋กœ๋Š” ์ดํ•ด๊ฐ€ ํž˜๋“œ์‹ค๊ฑฐ์—์š”. ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ด…์‹œ๋‹ค! ๋งŒ์•ฝ old์™€ new๋ผ๋Š” ๊ธ€์ž๋ฅผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋ฐ”๊พธ๊ณ ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? ๋ฐ”๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊ฑฐ์—์š”. ๋งŒ์•ฝ old์™€ new๊ฐ€ ์ˆซ์ž๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊ฑฐ์—์š”. ๋งŒ์•ฝ์— ๋ฉ”์†Œ๋“œ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์„ ์•Œ์•„์„œ ์•Œ๊ณ  ๋ฐ”๊ฟ”์ฃผ๋ฉด ์–ผ๋งˆ๋‚˜ ํŽธํ• ๊นŒ์š”? ๋งˆ์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ˆซ.. 2020. 12. 15.
[iOS] ํด๋ž˜์Šค์ด๋ฆ„ ํ•œ๋ฒˆ์— ๋ชจ๋‘ ๋ฐ”๊พธ๊ธฐ (Refactor Class name) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜๋„ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ๊ฒŒ ์žˆ์–ด์„œ ๊ณต์œ ๋“œ๋ฆด๋ ค๊ณ  ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํ‰์†Œ์— ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋‚˜ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€๋•Œ ์ง์ ‘ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ํ•ด๋‹น ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ๋˜ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—๊ฐ€์„œ ํ•ด๋‹น ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์Šคํ† ๋ฆฌ๋ณด๋“œ,ํŒŒ์ผ,๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„์„ ํ•œ๋ฒˆ์— ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์—ˆ๋Š”๋ฐ์š” ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!! ๋ฐ”๋กœ ์•„๋ž˜ ViewController์ด๋ฆ„์ด ์›๋ž˜ OnboardingViewController์ธ๋ฐ์š”. ์ €๋Š” ์ด๊ฒƒ์„ TravelViewController๋กœ ๋ฐ”๊พธ๊ณ ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๊ฟ€ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ˆ„๋ฅด๊ณ  ์šฐ์ธก ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด Refactor๋ผ๊ณ  ๋ณด์ด์‹ค๊ฑฐ์—์š”. ๊ฑฐ๊ธฐ์„œ Rename์„ ํ•˜์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ํŒŒ์ผ ๋ชจ๋‘ ํ•œ๋ฒˆ์— ๋ณด.. 2020. 12. 14.
[iOS/UI] UILabel ๊ธ€์ž์ˆ˜์— ๋”ฐ๋ผ์„œ ํฐํŠธํฌ๊ธฐ ์ž๋™์œผ๋กœ ๋งž์ถ”๊ธฐ (Minimum Font Scale) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๊ธ€์ž์ˆ˜์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ํฐํŠธํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์•Œ๊ฒŒ ๋˜์–ด์„œ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•ด๋“œ๋ฆด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๊ฐ™์€ ํฌ๊ธฐ ์•ˆ์— ๊ธ€์ž๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด (์Šคํฌ๋กค๋˜์ง€์•Š๊ณ ) ํฐํŠธํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ ๋ชจ๋“  ๊ธ€์ž๊ฐ€ ๋ณด์ด๋„๋ก ํ•ด์•ผํ• ํ…๋ฐ์š”. StoryBoard ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐ€์…”์„œ ์•„๋ž˜ ๋ณด์ด๋Š” Autoshrink๋ฅผ ํƒญํ•˜์‹œ๋ฉด minimum Font Scale๊ณผ minimum Font Size๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์—ฌ๊ธฐ์„œ minimum Font Scale์„ ๊ณจ๋ผ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•„๋ž˜์ฒ˜๋Ÿผ ๊ธ€์ด ์ ์„๋•Œ๋Š” ํฐํŠธ์‚ฌ์ด์ฆˆ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ฒŒ ๊ธ€์ด ์•„์ฃผ ๊ธธ๋•Œ๋Š” ํฐํŠธ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘๊ฒŒ ์กฐ์ •๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!! 2020. 12. 14.
728x90
๋ฐ˜์‘ํ˜•