๐ŸŽ iOS/UIKit

ํ…Œ์ด๋ธ”๋ทฐ์— ์…€์ด ๋งŽ์„ ๋•Œ ๋น ๋ฅด๊ฒŒ ์˜ฌ๋ฆฌ๋ฉด ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜ค๋Š”๊ฒŒ ๋Šฆ์–ด์ง„๋‹ค.  ์ด๋ฏธ์ง€ url๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•˜๊ณ   ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ณ   ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ์— ์ด๋ฏธ์ง€๋ฅผ ๋ทฐ์— ํ• ๋‹นํ•˜๋Š” ์ฝ”๋“œ๋Š” ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์Šคํฌ๋กคํ•  ๋•Œ ์ž˜๋ชป ์„ค์ •ํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์ฆ‰, ์…€์— ์ด๋ฏธ์ง€๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋น„๋™๊ธฐ์ ์ธ ์ž‘์—…์ด ์ผ์–ด๋‚˜๋Š” ์ „๋‹ฌ์„ ํ•ด์ฃผ๋ฉด ์•ˆ๋œ๋‹ค.
ViewController ์ƒ๋ช…์ฃผ๊ธฐ๋ž€ ViewController๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์‚ฌ๋ผ์ง€๋Š” ๋“ฑ ํ™”๋ฉด์˜ ์ „ํ™˜ ์‹œ์ ์— ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณผ์ •์ด๋‹ค.์ด๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ, UI๋ณ€๊ฒฝ ๋“ฑ์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.  UIVIewController๋กœ ์ •์˜ ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด์œ ๋Š” ์ƒ๋ช…์ฃผ๊ธฐ์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” UIKit ๋‚ด์˜ UIViewController๋ผ๋Š”ํด๋ž˜์Šค ์•ˆ์— ์ด๋ฏธ ์ •์˜ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, UIViewController ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋“ค์„override ํ•œ ๋’ค์— ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.  ๊ฐ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ์ด์ „ ๋‹จ๊ณ„๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ ์ „์—๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.   loadView๋ทฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์œผ๋กœ ํ•จ๋ถ€๋กœ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค.์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค...
cmd + k   ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์ž๋™์œผ๋กœ ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ ์˜ค์ง€ ์•Š๋Š”๋‹ค.๋”ฐ๋ผ์„œ ์„ค์ •์„ ๋”ฐ๋กœ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.     Toggle Software Keyboard ๋ฅผ ํ™œ์„ฑํ™” ํ•ด์ฃผ๋ฉด ๋!   import UIKitimport SnapKitclass MainViewController: UIViewController { var textField = UITextField() var doneButton = UIButton() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor.gray configure() } ..
์ด๋ฒˆ ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” ํ•˜๋‚˜์˜ ํ™”๋ฉด์—์„œ ๊ฒฐ์ œ๊นŒ์ง€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ œ์˜€๋‹ค. ๊ณ ๋ฏผ์„ ํ•˜๋‹ค ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€๊ฐ€ ๋”ฐ๋กœ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์—†์–ด์„œ ํ•˜ํ”„ ๋ชจ๋‹ฌ์„ ๋„์šฐ๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋‹ฌ์„ ์—ด๊ธฐ ์ „๊นŒ์ง„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ƒํ’ˆ์ด ์ œ๋Œ€๋กœ ๋‹ด๊ฒผ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์•˜๋‹ค.   ๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ์•ฑ๋“ค์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋“ค์„ ๊น”์•„๋ณด๊ณ  ์ฐพ์•„๋ณด์•˜๋‹ค. (์ด๋ ‡๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๋‹ค ์‹ค์ œ๋กœ ์Šคํƒ€๋ฒ…์Šค ์‚ฌ์ด๋ Œ ์˜ค๋” ์ž๋™๊ฒฐ์ œ๋กœ ๋„˜์–ด๊ฐ€์„œ ํŠธ๋ Œํƒ€ ์‚ฌ์ด์ฆˆ ์•„์ด์Šคํ‹ฐ ๋งค์žฅ ํ”ฝ์—…ํ•˜๊ฒŒ ๋๋‹ค๋Š” ์ฐ๊ณผ ํ•จ๊ป˜....โ˜†)๊ทธ์ค‘์—์„œ ๋‚˜๋Š” ๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ์˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๋Š” ๊ธฐ๋Šฅ์ด ์ ํ•ฉํ•ด ๋ณด์˜€๋‹ค.   ๋ฐ”๋กœ ์ด ๊ธฐ๋Šฅ์ด๋‹ค!!!๊ทผ๋ฐ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€๋ฐ ๋ญ๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•ด์•ผํ• ์ง€ ๊ฐ์กฐ์ฐจ ์˜ค์ง€ ์•Š์•˜๋‹ค...๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธธ ๋•Œ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธฐ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ๋“ฑ์ •๋ง ๋‹ค์–‘ํ•œ ๊ฒ€์ƒ‰์–ด๋กœ ์ฐพ์•„๋ณด๊ณ  ..
ํŒ€ํ”„๋กœ์ ํŠธ ๋•Œ ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์€ ๊ตฌํ˜„์ด ๋๋‚˜์„œ๋Ÿฐ์น˜์Šคํฌ๋ฆฐ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ์ฐพ์•„ ๋ณธ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.   Lottie ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Lottie๋Š” gif์™€ ๊ฐ™์€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ JSON ํ˜•์‹์œผ๋กœ ์—์–ด๋น„์•ค๋น„์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ importํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ฝ”์ฝ”์•„ํŒŸ, ์นด๋ฅดํƒ€๊ณ , SPM ๋“ฑ์ด ์žˆ์ง€๋งŒ๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ SPM์ด ๊ฐ„๋‹จํ•ด์„œ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ถ”๊ฐ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.    ์„ค์น˜ ๋ฐฉ๋ฒ•1. ๊ณต์‹ ๊นƒํ—ˆ๋ธŒ์—์„œ ๋งํฌ ๋ณต์‚ฌhttps://github.com/airbnb/lottie-ios   2. project์—์„œ packages์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.      3. Lottie ํ™ˆํŽ˜์ด์ง€์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ฒ€์ƒ‰ ํ›„ ํŒŒ์ผ ์ €์žฅ https://lottiefiles.com/    4. Xcode์—์„œ Assets ํ•˜๋‹จ์— JSONํŒŒ์ผ ..
โœ… TableView(ํ…Œ์ด๋ธ”๋ทฐ): ๋‚ด๋ถ€์— ์…€์ด ์กด์žฌํ•˜๊ณ  ์„ธ๋กœ๋กœ๋งŒ ์Šคํฌ๋กค์ด ๊ฐ€๋Šฅํ•œ ๋ทฐ๊ทธ๋ฃน์„ ์ง€์„ ์ˆ˜๋„ ์žˆ์Œ  ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๊ฐœ๋…  โœ… ํ…Œ์ด๋ธ”๋ทฐ์˜ ๊ตฌ์กฐ ViewController(๊ฐ์ฒด)tableView(๊ฐ์ฒด)tableViewCell(๊ฐ์ฒด) ViewController์™€ tableView ๊ฐ„์— ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์˜์‚ฌ์†Œํ†ต ํ•„์š”ํ•œ๋ฐ์ด๊ฒƒ์„ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค. UITableVivewController๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” UITableViewDatSource ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•ด์ค˜์•ผ ํ•œ๋‹ค.์ด ํ”„๋กœํ† ์ฝœ์€ tableView์™€ ViewController๊ฐ€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ปจํ…์ธ ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ํ‘œ์‹œํ•  ๊ฑด์ง€์— ๋Œ€ํ•œ ์†Œํ†ต. ์…€์€ ๋ช‡๊ฐœ ํ•„์š”ํ•œ์ง€, ์…€์€ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ•ด์•ผํ•˜๋Š”์ง€  โœ… UITa..
์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์™ผ์ชฝ์˜ ๊ฒ€์€์ƒ‰ ํ™”๋ฉด ์ฒ˜๋Ÿผ ๋œฌ๋‹ค. ์™œ ๋ชจ๋‹ฌ์ด ์•ˆ ๋œจ๊ณ  ๋ฒ„ํŠผ์ด ๋œจ๋Š”์ง€ ์˜๋ฌธ์ด์—ˆ๋‹ค. ๋ฐฐ๊ฒฝ์„ ํ™”์ดํŠธ๋กœ ์„ค์ •ํ•ด๋‘๊ณ  ๋ณด๋‹ˆ ๋ชจ๋‹ฌ์€ ์˜ฌ๋ผ ์™”์œผ๋‚˜๋ฐฐ๊ฒฝ์ด ๊ฒ€์€์ƒ‰์ด์–ด์„œ ๋ฒ„ํŠผ๋งŒ ์˜ฌ๋ผ์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€๋‹ค.  ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ์˜ ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ vc๋ฅผ ํ˜„์žฌ์˜ ViewController๋กœ ์„ค์ •ํ•ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ! ํ•ด๊ฒฐ์„ ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” ๋ชจ๋‹ฌ์„ ๋„์–ด์ค„ ์ƒˆ๋กœ์šด UIViewController ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ค˜์•ผ ํ•œ๋‹ค.   Cocoa Touch Class ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.    Subclass of : ๋ถ€๋ถ„์„ UIViewController๋ฅผ ์ƒ์†ํ•œ ํด๋ž˜์Šค๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.   import UIKit//ModalController.swiftclass ModalController: UIViewController { override func v..
→์ด๋ฒˆ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๊ตฌํ˜„ํ•  ๋•Œ ๊ฐ€์žฅ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„์ด๊ฐ ์ฝ”๋“œ๋“ค๊ฐ„์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ์ด์–ด๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์–ด๋ ค์› ๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ ์˜๋ฌธ์ด ๋“œ๋Š” ๋ฉ”์„œ๋“œ๋‹ค.  ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณค ํ•˜๋Š”๋ฐtarget์— ์ฃผ๋กœ self๊ฐ€ ์‚ฌ์šฉ๋˜์–ด ์˜๋ก€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ์—ˆ๋‹ค.  ํ•˜์ง€๋งŒ ์ •ํ™•ํ•˜๊ฒŒ ๋ฌด์—‡์„ ์˜๋งˆํ•˜๊ณ ,์–ด๋–ป๊ฒŒ ์ด ์ฝ”๋“œ๋กœ ์ธํ•ด ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€์— ๋Œ€ํ•œ์˜๋ฌธ์ด ์ƒ๊ฒจ ํ•ด๋‹น ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.  addTarget(_:action:for:) ์ปจํŠธ๋กค๊ณผ ํƒ€๊ฒŸ ๊ฐ์ฒด ๋ฐ ์•ก์…˜ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let ..
AHN.Jihyeon
'๐ŸŽ iOS/UIKit' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก