๐ ๋น๋ ํด๋ฆฐ Clean Build Folder ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ Image ํ์ผ๋ค์ ์ถ๊ฐํ๊ณ ๊ด๋ฆฌํ๋ ๊ณผ์ ์์ AppIcon ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง๋ฌ๋ค. 2๊ฐ์ง ์ค๋ฅ๊ฐ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋จ๊ธฐ๋ ํ๋๋ฐ, App ์์ด์ฝ ์ด๋ฏธ์ง๋ฅผ ํฝ์ ๋ณ๋ก ๋ค์ด๋ฐ์์ ํด๋ ๊ทธ๋๋ก ์ถ๊ฐํ์์๋ ์ด์ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ง๋์ Build Success๊ฐ ์ด๋ฃจ์ด์ง์ง ์์๋ค. AppIcon ๋ค์ด๋ฐ๋ ์๋ชป๋์ง์์์๊ณ , 152.png ํ์ผ๋ ์ ์์ ์ผ๋ก ๋์๊ฐ ์์๋ค. ์ด ๋ ํด๊ฒฐ๋ฐฉ๋ฒ์, ์ด๋ฏธ์ง๋ฅผ ๊ต์ฒดํ๊ณ ์๋ก ์ถ๊ฐํ๋ ํ์๋ฅผ ํ์ง๋ง๊ณ Product - Clean Build Folder ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค. ์ฐพ์๋ณด๋ Xcoce์์ ์์ฒด์ ์ผ๋ก ์ง์ํด์ฃผ๋ ๊ธฐ๋ฅ์ธ๋ฐ, 100% ์๋ฒฝํ๊ฒ ์ง์์ง๋๊ฒ์ ์๋๋ผ๊ณ ํ์ง๋ง ์ด๋ฏธ์ง ๊ด๋ จํ ์๋ฌ..
์๋ช ์ฃผ๊ธฐ ( LifeCycle ) ์๋ช ์ฃผ๊ธฐ๋ผ๋ ๊ฒ์ ์ฑ์ ์ต์ด ์คํ๋ถํฐ ์ฑ์ด ์์ ํ ์ข ๋ฃ๋๊ธฐ๊น์ง ์ฑ์ด ๊ฐ์ง๋ ์ํ์ ๊ทธ ์ํ๋ค ์ฌ์ด์ ์ ์ด๋ฅผ ๋งํ๋ค. ์ฑ์ ์ํ๋ ์ฑ์ด ํ์ฌ ์ด๋ ํ ๊ฒ์ ํ ์ ์๋๊ฐ๋ฅผ ๊ฒฐ์ ํ๋ค. ์ฑ์ ์๋ช ์ฃผ๊ธฐ ( App's Life Cycle ) App์ ์๋ช ์ฃผ๊ธฐ๋ APP์ ์คํ/์ข ๋ฃ ๋ฐ App์ด Foreground/Background ์ํ์ ์์ ๋, ์์คํ ์ด ๋ฐ์์ํค๋ event์ ์ํด App์ ์ํ๊ฐ ์ ํ๋๋ ๊ณผ์ ์ ๋งํ๋ค. ์นด์นด์คํก ์ฑ์ผ๋ก ์นดํก์ ํ๊ณ ์๋ ๋์ค์ ์ ํ๊ฐ ์์ ๋ ์ฑ์ด ํ๋ฉด์์์ ๋ณด์ฌ์ง์ง ์๋ ์ํ์ธ Background ์ํ์ ์ฑ์ด ํ๋ฉด์ ์ฌ๋ผ์์๋ ์ํ์ธ Foreground ๋ฑ๊ณผ ๊ฐ์ ์ํ๋ค์ ์ ์ํ ๊ฒ์ด๋ค. iOS์์ ์ฑ์ ์คํํ๋ฉด ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๊น ? iO..
์ฝ๋๋ก Navigation ์์ญ ์์ ์ ๋ฐ๋ณตํ๋ค๊ฐ ์๊ฒ ๋ ์ฌ์ค .. ์๋๋ Navigation Back ๋ฒํผ์ ํตํด ํ๋ฉด์ ์ ํํ๋ค๊ฐ ๋์์ค๋ฉด, ํด๋น ๋ฒํผ์ด ๋ณด์ด์ง ์๋ ํ์๋๋ฌธ์ ์์ ์ ํ๋ ค๊ณ ํ์๋๋ฐ, ์ด๋ฅผ ์์ ํ๋ค ์ฐ์ฐํ ํ์ํ๋ ๊ตฌํ์ ํ๊ฒ ๋์๋ค. Navigation Back Button A ํ๋ฉด์์ Navigation ๋ฒํผ์ ํตํด B ํ๋ฉด์ผ๋ก ์ ํํ์ ๋, Bํ๋ฉด์์ ๋ค์ A ํ๋ฉด์ผ๋ก ๋์๊ฐ๋ Navigation ์์ญ์ Back ๋ฒํผ์ ์ปจํธ๋กค๋ฌ์ ํ์ดํ์ ๋ณด์ด์ง ์๊ณ , ํ์ดํ ๋ชจ์๋ง ๋ณด์ด๊ฒ ํ๊ณ ์ถ์๋ค. ์ผ๋จ ๋ค๋ก๊ฐ๋๋ฒํผ์ด ์ฌ๋ผ์ง๋ ํ์์ ์์ธ ๋ค๋น๊ฒ์ด์ ๋ฐ์ ์คํ์ผ๊ณผ ๋ฒํผ ์์ฑ์ด ์ ํํ๊ฒ ์ค์ ๋์ด์๋์ง ํ์ธํด์ผ ํ๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ ๋ค๋น๊ฒ์ด์ ๋ฐ์ ์คํ์ผ๊ณผ ๋ฒํผ ์์ฑ์..
SnapKit SnapKit์ ์ฌ์ฉํด๋ณด๋ฉด์ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ ์ ๋ฆฌ - offset/inset - translateAutoresizingMaskIntoContraints ๐ offset / inset ๐กoffset ์ฌ์ฉ์ 'ํ์ฌ ๋ทฐ constraint = ์ํผ๋ทฐ constraint + offset ๊ฐ'์ ์๊ฐํ๊ณ ์ค์ ํ๋ค. label.snp.makeConstraints { make in make.top.equalToSuperview().offset(50) make.left.equalToSuperview().offset(50) make.right.equalToSuperview().offset(-50) make.bottom.equalToSuperview().offset(-50) } ๊ธฐ์ค์ด ๋๋ View์ ๋ง์ถฐ์ ..
๐ Shadow & cornerRadius ์ผ๋ฐ์ ์ผ๋ก Shadow๋ Radius๋ฅผ ๊ฐ์ดํ๋ฉด ์ ์ฉ์ด ์๋๋๋ฐ, Cell์ ์ฝ๊ฒ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค. func setUpLayout() { layer.shadowColor = UIColor.black.cgColor layer.shadowOpacity = 0.5 layer.shadowRadius = 10 contentView.layer.cornerRadius = 10 contentView.layer.masksToBounds = true } Cell ์์์ Layout ํ ๋ ์ด๋ ๊ฒ Cell์ Shadow๋ฅผ ๋ฃ๊ณ corner Radius๋ฅผ ์ ์ฉํด์ฃผ๋ฉด ๋๋ค. ๐ก CollectionView Cell์ ํ ๋๋ฆฌ ๋ฅ๊ทผํจ๊ณผ๋ง ์ ์ฉ ๐ก Button์ด๋ View์ ํ ๋๋ฆฌ ๋ฅ๊ธ๊ฒ l..
๐ Delegate Pattern Delegate ํจํด์ iOS์์ ์ ๋ง ๋ง์ด ์ฐ์ด์ง๋ง, ๋ญ์ง ๋ชจ๋ฅด๊ณ ๊ทธ๋ฅ ์ฝ๋๋ฅผ ์น๊ณ ์๊ธฐ ์ ์ผ ์ฌ์ด ๊ฒ๋ค ์ค ํ๋์ธ ๊ฒ ๊ฐ๋ค. ์๋ฅผ ๋ค์ด, UITableView๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ UITableViewDataSource, UITableViewDelegate๋ฅผ ๋น์ฐํ๊ฒ ViewController์ ์ฑํํ๊ณค ํ์ง๋ง ์ ๊ผญ ํ ์ด๋ธ๋ทฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด UITableViewDataSource๋ฅผ ์ฑํํด์ผ ํ๋์ง, UITableViewDataSource์ UITableViewDelegate๋ ์ ํ๋กํ ์ฝ๋ก ๊ตฌํ๋์ด ์๋์ง ๋ฑ๋ฑ์ ์ค๋ช ํ๋ ๊ฑด ํนํ๋ ์ด์ฌ์์๊ฒ ์ฝ์ง ์์ ์ผ์ด๋ค. ์ ํ์ ์ ๊ทธ๋ ๊ฒ๋ ๋ง์ UI์์๋ค์ Delegate ํจํด์ ์ฌ์ฉํ๊ณ ์๋ ๊ฑธ๊น ํญ์ ์ดํดํ ๋ฏ ์ ํ๋ฏ, ..
๐ AutoLayout : TableView_Text_Dynamic_Cell Text Line์ ๋ฐ๋ผ Cell์ ๋์ด๋ฅผ ๋์ ์ผ๋ก ๋ณํ๊ฒ ํ๋ ๋ฐฉ๋ฒ tableView tableViewCell ์ค์ ํ Label 4๊ฐ๋ฅผ ๋ชจ๋ ์ํ์ข์ฐ 20์ ์ค๋ค. ( ์ ์ผ ์ฐ์ธก ์๋จ์ bottom์ ์ ๊ฑฐ ) ์ผ์ชฝ 3๊ฐ์ ๋ผ๋ฒจ Hugging Priority - Vertical์ ์กฐ์ ํ์ฌ ์ ๋ ฌํ๋ค. Cell์ identifier ์ค์ tableView๋ฅผ VC์ dataSource, delegate ์ฐ๊ฒฐ protocol ์ถ๊ฐ ํ ์ฝ๋ ์ ๋ ฅ ํ์ฌ๊น์ง์ ๊ฒฐ๊ณผ MyCell์ Class๋ฅผ ๊ฐ์ ํ์ผ์ ์์ฑํ์ฌ์ฃผ๊ณ ( ๋ค๋ฅธ ํ์ผ์ ๋ง๋ค์ด์ค๋ ๋๋ค ) Cell์์ Label์ค ์ตํ๋จ์ ๊ฒ์ IBOulet ์ค์ ํ๋ค. talbeViewCell์..
๐ AutoLayout : TableView_Expand ์์ ๋ก์ด ๋์ ๋์ด Table View์ Cell ์ ํด๋ฆญํ์๋ Cell ์ ๋์ด๊ฐ ๋์ ์ผ๋ก ๋ณํ๋ ( expand ) Layout tableView - tableViewCell - Label ๋ ์ด์์ ์ค์ ํ MyCell ํด๋์ค๋ฅผ ์์ฑํ์ฌ label Outlet ์ค์ ์ดํ tableView์ ํด๋นํ๋ ์ฝ๋๋ฅผ ๊ตฌ์ฑํด์ค๋ค. ๋ค ๋๋ค๋ฉด ์คํ ๋ฆฌ๋ณด๋์ tableView๋ฅผ ์์ VC์ dataSource, delegate๋ฅผ ์ฐ๊ฒฐํ๋ค. ( TableViewCell์ identifier = expandCell ์ค์ ํ Class๋ฅผ ์์ฑํด์ฃผ์๋ MyCell๊ณผ ์ฐ๊ฒฐํด์ฃผ์ด์ผํ๋ค. ) ( Label ์ Lines๋ 0 ์ผ๋ก ํด์ฃผ์ด์ผ ํ๋ค. ) Label์ ๋ค์ด๊ฐ ์์ ..