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

iOS14

[iOS] addsubview()์™€ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ subview ์ถ”๊ฐ€ํ•˜๊ธฐ ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ ์† ํ•˜์œ„๋ทฐ ์ถ”๊ฐ€ํ•˜๊ธฐ - addSubview() ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ทฐ๋ฅผ ์บ”๋ฒ„์Šค๋กœ ๋Œ์–ด์™€์„œ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ๋„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ๋ทฐ์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ํ–ฅํ›„ ์ง€์ • ๋  superview๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋ทฐ์˜ ์™ผ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ๊ฐ€ ์ถ”ํ›„ ์„ค์ •๋  superview์˜์ขŒํ‘œ ์‹œ์Šคํ…œ์—์„œ (10, 10) ์ง€์ ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. let rect = CGRect(x: 10, y: 10, width: 100, height: 100) let myView = UIView(frame: rect) ์œ„ ์ฝ”๋“œ ์ฒ˜๋Ÿผ ์ƒ์„ฑํ•œ ๋ทฐ๋ฅผ superview์˜ subview๋กœ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด addSubview(_:)๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ.. 2023. 2. 14.
[iOS] Xcode์˜ Target ์ด๋ž€? iOS ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ์ž์ฃผ ๋‚˜์˜ค๋Š” target์ด๋ผ๋Š” ์šฉ์–ด์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ๊ณต๋ถ€ํ•˜๊ณ  ๊ฐ€์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ•  ๋•Œ ๊ผญ target์„ ์„ ํƒํ•˜๋Š” ๋ถ€๋ถ„์ด ๋‚˜์˜ค๋Š”๋ฐ ๋ณดํ†ต ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํƒ์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์˜ค๋Š˜์€ ์ด target์€ ๋ฌด์—‡์ธ์ง€ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. (+ Group๋ž€์€ ์ด ํŒŒ์ผ์„ ๋„ฃ์„ Group(ํด๋”)๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๊ณ  ์›ํ•˜๋Š” ํด๋”ํด๋ฆญ ํ›„ ์šฐํด๋ฆญ ํ•œ๋’ค New File ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ์—๋Š” ์ž๋™์œผ๋กœ ํ•ด๋‹น ๊ทธ๋ฃน ์„ ํƒ๋˜์–ด์žˆ์Œ) target์€ ๋ฌด์—‡์ผ๊นŒ? target๊ณผ ๊ด€๋ จํ•˜์—ฌ apple ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ž˜ ์„ค๋ช…ํ•ด์ฃผ๊ณ  ์žˆ๋Š”๋ฐ ํ•ด๋‹น ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ดํ•ดํ•œ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. target์€ ์•ฑ, ํ”„๋ ˆ์ž„์›Œํฌ, ์•ฑ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์œ ๋‹› ํ…Œ์ŠคํŠธ.. 2023. 2. 13.
[iOS] iOS Concurrency - 1. GCD/Operation, ๋™๊ธฐ/๋น„๋™๊ธฐ, ์ง๋ ฌ/๋™์‹œ Inflearn: iOS Concurrency ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜ ์ •๋ฆฌ 1. GCD/Operation์— ์•ž์„œ 1) ์™œ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ํ•„์š”ํ• ๊นŒ? ์“ฐ๋ ˆ๋“œ : ์ผํ•˜๋Š” ๋…€์„๋“ค : ์•„์ดํฐ 11ํ”„๋กœ 6์ฝ”์–ด ( ์ผ์„ํ•˜๋Š” ๋…€์„์ด 6๊ฐœ๊ฐ€ ๋‹ฌ๋ ค์žˆ๋‹ค, ๋ช‡๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์žˆ๋Š”์ง€๋Š” ์•Œ๋ ค์ง€์ง€ ์•Š์Œ ๋Œ€๋žต 12๊ฐœ ์ด์ƒ ์ •๋„) ์•„์ดํฐ์€ 16๋ฐ€๋ฆฌ์˜ 1์ดˆ๋งˆ๋‹ค ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ฒŒ ๋ฆฌํ”„๋ ˆ์‹ฑ์„ ํ•˜๋Š”๋ฐ ๊ทธ ์ž‘์—…์„ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋ฐฉํ•ดํ•˜๊ณ  ์žˆ์–ด์„œ ์˜์ƒ์ฒ˜๋Ÿผ ๋ฒ„๋ฒ…์ด๋Š” ํ˜„์ƒ ๋ฐœ์ƒํ•œ๋‹ค! ์•„์ดํฐ์€ ์ผํ•˜๋Š” ๋…€์„์ด ์—ฌ๋Ÿฟ์ธ๋ฐ ์™œ ๋ฒ„๋ฒ…์˜€๋Š”๊ฐ€? ๐Ÿ’ก → ํ•œ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ์—์„œ๋งŒ ์ผ์„ ์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๋ฒ…์ธ ๊ฒƒ. cmd + 7 ๋ˆ„๋ฅด๋ฉด ์œ„์ฒ˜๋Ÿผ ์–ด๋–ค ์Šค๋ ˆ๋“œ๊ฐ€ ์ผํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž˜๋ชปํ•ด์„œ ์šฐ์—ฐ์ฐฎ๊ฒŒ ํ™”๋ฉด์„ ๊ด€๋ฆฌํ•˜๋Š” ํ•œ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋งŒ ๊ณ„์† ์‚ฌ์šฉํ•ด์„œ ๋ฒ„๋ฒ…์ด๊ฒŒ ๋จ ๊ทธ๋™์•ˆ์—๋Š” ์šฐ๋ฆฌ๊ฐ€.. 2023. 2. 11.
[iOS] Rx์—†์ด ๊ตฌํ˜„ํ•˜๋Š” MVVM๊ธฐ์ดˆ MVVM ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„(API)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ํ…Œ์ด๋ธ” ๋ทฐ์— ํ‘œ์‹œํ•˜๋Š” ์˜ˆ์ œ ์„œ๋ฒ„์—์„œ ์ง์› ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์— ๋Œ€ํ•œ ๋ฆฌ์Šคํฐ์Šค(response)๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ด ๋ชฉ๋ก์„ ํ…Œ์ด๋ธ” ๋ทฐ์— ํ‘œ์‹œํ•œ๋‹ค. MVVM ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ฐœ์š”์™€ ์—ญํ•  ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ (View Controller): UI ๊ด€๋ จ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ •๋ณด ํ‘œ์‹œ ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๋“ฑ์˜ ์ž‘์—…์ด ์žˆ๋‹ค. ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ทฐ ๋ ˆ์ด์–ด์˜ ์ผ๋ถ€์ด๋‹ค. ๋ทฐ๋ชจ๋ธ (View Model): ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ด ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋’ค ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค. ๋ชจ๋ธ (Model): MVC์—์„œ์™€ ๊ฐ™์€ ๋ชจ๋ธ์ด๋‹ค. ๋ทฐ๋ชจ๋ธ์ด ์‚ฌ์šฉํ•˜๊ณ  ๋ทฐ๋ชจ๋ธ์ด ์ƒˆ ์—…๋ฐ์ดํŠธ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๋ชจ๋ธ๋„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ์˜ˆ์ œ ๋™์ž‘ ๋ฐฉ์‹ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋ทฐ๋Š” ๋ทฐ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ .. 2023. 2. 9.
[iOS] UIButton.Configuration ์‚ฌ์šฉํ•ด๋ณด๊ธฐ SNS ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค private let kakaoLoginButton = UIButton().then{ $0.setImage(UIImage(named: "img_logo_kakao"), for: .normal) $0.backgroundColor = UIColor.kakaoyellow $0.setTitle("์นด์นด์˜ค๋กœ ๊ณ„์†ํ•˜๊ธฐ", for: .normal) $0.setTitleColor(UIColor.snslogoblack, for: .normal) $0.titleLabel?.font = UIFont.hanSansBoldFont(ofSize: 16) $0.clipsToBounds = true $0.layer.cornerRadius = 10 } ์Œ ์ด๋ฏธ์ง€์™€ ๊ธ€์”จ ์‚ฌ.. 2023. 2. 7.
[iOS] ์ œํ”Œ๋ฆฐ์—์„œ Xcode ์ปฌ๋Ÿฌ์—์…‹ ๋ฐ”๋กœ ์ถ”์ถœ ์ œํ”Œ๋ฆฐ์—์„œ ๋งŒ๋“ค์–ด ์ค€ swift UIColor Extension ์ฝ”๋“œ ๊ธ์–ด๋‹ค๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์ƒ‰์ƒ์ด ์ถ”๊ฐ€๋œ๋‹ค.! ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋งŒ ์žˆ๊ณ  ๋ฌด์Šจ ์ƒ‰์ธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ์–ด๋ ต๋‹ค ๐Ÿฅฒ ๋”ฐ๋ผ์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์—์…‹์นดํƒˆ๋กœ๊ทธ์—๋„ Color Asset์ถ”๊ฐ€ํ•ด์„œ ์ƒ‰์ƒ ๋ฏธ๋ฆฌ ๋ณด๋ฉด์„œ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด ~!? ์˜ค๋ฅธ์ชฝ ์œ„์— ์žˆ๋Š” Export ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค ! ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ์˜ .xcassets ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๊ณ  Export ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋! ์Šค๋ณด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹น 2023. 2. 5.