์ „์ฒด ๊ธ€

๊ต‰์žฅํ•  ๋‚˜
ยท iOS
PageViewController ์‚ฌ์šฉํ•ด๋ณด๊ธฐ..!! ํŽ˜์ด์ง€ ๋„˜๊ธฐ๋“ฏ์ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. extension PageVC: UIPageViewControllerDelegate, UIPageViewControllerDataSource { // ํŽ˜์ด์ง€ ์ด๋™ํ• ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ func pageViewController(_ pageViewController: UIPageViewController,didFinishAnimating finished: Bool,previousViewControllers: [UIViewController],transitionCompleted completed: Bool){ guard completed else { return } currentIndex = pageVie..
ยท iOS
1๋…„์ „ rx๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์–ด์„œ ๊ทธ๋•Œ ์ž ๊น ๊ณต๋ถ€ํ•˜๊ณ , ์ž‘๋…„ 7์›”์ฏค ํ•œ๋ฒˆ ๋” ๊ณต๋ถ€ํ–ˆ์ง€๋งŒ ๊ทธ๋•Œ๋Š” rx๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€, ์žฅ์ ์„ ์ฐพ์•„๋ด๋„ ์ดํ•ด๋Š” ๋˜์ง€๋งŒ ํฌ๊ฒŒ ์™€๋‹ฟ์ง€ ์•Š์•„์„œ ์กฐ๊ธˆ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค. ์ทจ์—…์ค€๋น„๋ฅผ ํ•˜๋ฉด์„œ ๊ธฐ์กด์— ๋งŒ๋“ค์–ด ๋ฐฐํฌํ–ˆ๋˜ ๋‹ค์ด์–ด๋ฆฌ ์•ฑ ์ฝ”๋“œ์˜ ์‹ฌ๊ฐ์„ฑ์„ ๋Š๊ปด ๋ฆฌํŒฉํ† ๋ง๊ณผ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ์—ฐ์Šต์šฉ ํ”„๋กœ์ ํŠธ๋กœ ํ–ˆ๋˜๊ฒƒ ๋ณด๋‹ค ์ข€ ๋” ๋ณต์žกํ•œ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•  ์ผ์ด ์ƒ๊ฒผ๋Š”๋ฐ @escaping์œผ๋กœ ๋ฒ—์–ด๋‚˜๊ณ  ์ค‘๊ด„ํ˜ธ ์•ˆ์œผ๋กœ ํƒ€๊ณ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ๋ญ”๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•„ ์ข€ ๋” ์ฐพ์•„๋ณด๋‹ˆ ์ด๋Ÿฐ ๋ถ€๋ถ„์„ rx๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋•Œ๋ถ€ํ„ฐ rx๋ฅผ ๋ฐฐ์›Œ์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ทจ์—…์„ ํ•œ ํ›„ ํšŒ์‚ฌ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค๋ณด๋‹ˆ ๋ณต์žกํ•œ ๋น„๋™๊ธฐ ์ˆœ์„œ๋•Œ๋ฌธ์— @escaping..
์ดˆ๊ธฐํ™” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ. ๋ชจ๋“  ์ €์žฅ ์†์„ฑ๋“ค์€ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์–ด์•ผ ์ธ์Šคํ„ด์Šค ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ (์ดˆ๊ธฐ๊ฐ’์ด ์ง€์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•จ) ํด๋ž˜์Šค ๊ตฌ์กฐ์ฒด ์ง์ ‘ ์ดˆ๊ธฐ๊ฐ’ ๋„ฃ๊ธฐ O O ์ƒ์„ฑ์ž ์‚ฌ์šฉ O O ๋ฉค๋ฒ„์™€์ด์ฆˆ ์ด๋‹ˆ์…œ๋ผ์ด์ € X O Convenience init ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ณด์กฐ ์ด๋‹ˆ์…œ๋ผ์ด์ € ์ž๊ธฐ ๋‹จ๊ณ„์— ์žˆ๋Š” ์ง€์ • ์ƒ์„ฑ์ž ๋˜๋Š” ์ž๊ธฐ ๋‹จ๊ณ„์— ์žˆ๋Š” ๋‹ค๋ฅธ ํŽธ์˜ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅ ์ง€์ • ์ƒ์„ฑ์ž๋Š” ์ƒ์œ„ ์ง€์ • ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•จ ํด๋ž˜์Šค์—๋งŒ ํ•ด๋‹นํ•˜๋Š” ๊ธฐ๋Šฅ (์ƒ์†๊ณผ ๊ด€๋ จ) ์ง€์ •์ƒ์„ฑ์ž๋ณด๋‹ค ์ ์€ ๊ฐฏ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ธŒ(Sub)๊ฐœ๋…์˜ ์ƒ์„ฑ์ž ํŽธ์˜ ์ƒ์„ฑ์ž๋Š” ์ง€์ • ์ƒ์„ฑ์ž์— ์˜์กด ๋ฐ ํ˜ธ์ถœ(์ง€์ •์ƒ์„ฑ์ž๊ฐ€ ์ €์žฅ ์†์„ฑ ์ดˆ๊ธฐํ™”) ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•จ ์‹ค์งˆ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ..
ยท iOS
์ œ๋ชฉ์ด.. ๊ธธ๋‹ค ๐Ÿฅฒ ๋ทฐ๋ฅผ ์Œ“๋Š” ๋ฐฉ๋ฒ•์ด ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ push, present๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. push๋Š” navigation controller๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ๋ทฐ์—์„œ ๊ฐ€๋Šฅํ•˜๊ณ , present๋Š” ๊ทธ๋ ‡์ง„ ์•Š์ง€๋งŒ present์œ„์— ๋ทฐ๋ฅผ push ํ•˜๋Š”๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. push -> navigation controller๋กœ ๊ฐ์‹ผ ๋ทฐ ์œ„์—๋งŒ ๊ฐ€๋Šฅ present -> ๊ทธ๋ƒฅ ๋ทฐ ์œ„์— ๊ฐ€๋Šฅ ์•„๋ฌดํŠผ ์ด๋Ÿฐ ๊ฐœ๋…์„ ์ „์ œ๋กœ ํ•˜๋ฉด presentํ•œ ๋ทฐ ์œ„์—๋Š” push๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, presentํ•œ ๋ทฐ๋ฅผ navigation controller๋กœ ๊ฐ์‹ธ๋ฉด ๊ทธ ์œ„์— push๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‚ด๊ฐ€ ๊ถ๊ธˆํ–ˆ๋˜ ์ƒํ™ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค VC1์—์„œ VC2๋ฅผ Pushํ•˜๋˜ ์ค‘ Navigation controller๋ฅผ ๊ฐ์‹ผ VC3 Present๋ฅผ ํ•˜์—ฌ ..
ยท iOS
์ฝ”๋“œ๋กœ ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•œ ๊ฒฝํ—˜์€ ๋ช‡๋ฒˆ ์žˆ์ง€๋งŒ ์Šคํ† ๋ฆฌ ๋ณด๋“œ๋กœ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ์ต์ˆ™ํ•ด์ ธ์„œ ๋‹ค์‹œ ๊ธฐ์–ต์†์—์„œ ์‚ฌ๋ผ์กŒ๋‹ค ใ… .ใ…  ์•„๋ฌด๋ž˜๋„ ์ง€๊ธˆ ๋‹ค๋‹ˆ๋Š” ํšŒ์‚ฌ์—์„œ๋Š” ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋‹ˆ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋Š” ๋”ฐ๋กœ ์—ฐ์Šตํ•˜์ง€ ์•Š์•„๋„ ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋Š” ํ™˜๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜ผ์ž์„œ ํ•˜๋Š” ์—ฐ์Šต ์˜ˆ์ œ๋‚˜ ํ”„๋กœ์ ํŠธ๋Š” ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋ด์•ผ๊ฒ ๋‹ค! ๊ตฌ์„ฑํ•œ ํ™”๋ฉด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. UIViewController - UIView - UIView - UIButton ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ๋ณด์ž๋ฉด ... ์ด๋Ÿฐ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. (์ด ๊ธฐ๋Šฅ ๋„ˆ๋ฌด ์ข‹๋‹ค ๐Ÿซถ๐Ÿป) ๋จผ์ € ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ์ „์ฒด์ ์ธ ํ‹€์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. // ์ƒˆ๋กœ์šด ๋ทฐ ์ƒ์„ฑ let newView = UIView() // ๊ธฐ๋ณธ ๋ทฐ์— ์ถ”๊ฐ€ view.addSubview(newV..
ยท iOS
AutoLayout์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ landscape์™€ portrait์— ๋”ฐ๋ฅธ ํ™”๋ฉด ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ๋“ค์€ ๊ฐ•์˜๊ฐ€ ์กฐ๊ธˆ ์˜›๋‚  ๊ฐ•์˜๋ผ Vary for Traits์„ ์‚ฌ์šฉํ•œ ํ™”๋ฉด๊ตฌ์„ฑ๋ฐฉ์‹์„ ์†Œ๊ฐœํ–ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ํ˜„์žฌ ๊ณต๋ถ€ํ•˜๋Š” 23๋…„ 3์›” ์‹œ์ ์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ์—†์—ˆ๋‹ค. ์ฐพ์•„๋ณด๋‹ˆ xcode 13 ์—…๋ฐ์ดํŠธ ๋ถ€ํ„ฐ ์ด ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ ธ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผํ–ˆ๋‹ค. ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์ฐพ๋˜ ์ค‘ ์‚ฌ๋žŒ๋“ค์ด ์ถ”์ฒœํ•ด์ค€ ๋™์˜์ƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ๊ณ , ์—ฌ๊ธฐ์„œ ํ•ด๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‚˜๋Š” ์ฒซ๋ฒˆ์งธ ์„ธ๋กœ ํ™”๋ฉด์—์„œ๋Š” 2x2๋กœ ๊ตฌ์„ฑ๋œ ๋„ค๋ชจ ๋ฐ•์Šค๋ฅผ ๊ฐ€๋กœ ํ™”๋ฉด์ผ๋•Œ๋Š” 1x4๋กœ ๋‚˜ํƒ€๋‚˜๋„๋ก ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. (์–ด์ฐŒ๋๊ฑด ๊ฐ€๋กœ ์„ธ๋กœ ํ™”๋ฉด ๊ตฌ์„ฑ์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค!) ์‹œ์ž‘ 1. ๋จผ์ € ์„ธ๋กœ ํ™”๋ฉด์ผ ๋•Œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” Constraints๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. 2. Constraint..
ยท iOS
TableView๋‚˜ TextField์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€๋” tableView.delegate = self ๋ฅผ ์ ์–ด์ฃผ์ง€ ์•Š์•„ ๋™์ž‘์ด ์•ˆ๋ ๋•Œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋งค๋ฒˆ ์Šต๊ด€์ ์œผ๋กœ ์ด ์ฝ”๋“œ๋ฅผ ์ ์–ด์ฃผ์—ˆ์ง€๋งŒ ์™œ ์ด๊ฑธ ์ ์–ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด์ด๋ž€? ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์œ„์ž„ํ•œ๋‹ค ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. ์ฆ‰ ์˜์ž„์ž๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์ž์‹ ์˜ ์ผ์„ ์œ„์ž„ํ•˜๋Š” ํ˜•ํƒœ์˜ ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ ๊ฐ์ฒด์™€ ๊ฐ์ฒด๊ฐ„์˜ ๋Œ€ํ™”๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. class ViewController: UITableViewDelegate { func tableViewFunction() { print("tableview ์ฒซ๋ฒˆ์งธ ํ•จ์ˆ˜ ์‹คํ–‰") } // ์‹คํ–‰๋ถ€ let tableView = UITableView() tableView.delegate ..
Code (์ฝ”๋“œ์˜์—ญ) ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ๊ธฐ๊ณ„์–ด(0101…)๋กœ ๋ณ€ํ™˜๋˜์–ด ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๊ณต๊ฐ„ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ • (์ฝ”๋“œ์˜์—ญ์˜ ํฌ๊ธฐ, ์ฝ”๋“œ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜) Read-Only๋กœ ์ค‘๊ฐ„ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Œ ํ…์ŠคํŠธ ์˜์—ญ์ด๋ผ๊ณ ๋„ ํ•จ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ์Œ CPU๋Š” ์ฝ”๋“œ ์˜์—ญ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ๊ฐ€์„œ ์ฒ˜๋ฆฌํ•จ Data (๋ฐ์ดํ„ฐ ์˜์—ญ) ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ง€์›Œ์ง€์ง€ ์•Š์„ ๋ฐ์ดํ„ฐ ์ €์žฅ (์ „์—ญ๋ณ€์ˆ˜, static๋ณ€์ˆ˜ ๋“ฑ์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณต๊ฐ„) ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ • ์ฝ”๋“œ์˜์—ญ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ์Œ Heap (ํž™ ์˜์—ญ) ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ํž™์ด ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋จ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์˜์—ญ์„ ์ฐพ์•„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹(๋™์ ํ• ๋‹น)์ด..
๋ฆด๋ฆฌ๐Ÿฐ
Hi Lily