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

๐ŸŽ iOS138

[Design Pattern] Apple์˜ MVC ํŒจํ„ด์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ๊ธ€์— MVC ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค˜์—ˆ๋Š”๋ฐ iOS์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์ปค์Šคํ…€๋ทฐ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ๋ญ”๊ฐ€ ๋” ์ •์„์ ์ธ MVC ํŒจํ„ด์„ ๊ตฌํ˜„ํ–ˆ์–ด์š”. (ํ˜น์‹œ ์•ˆ๋ณด์…จ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ด์ฃผ์„ธ์š”!) ํ•˜์ง€๋งŒ ๋ณดํ†ต MVCํ•˜๊ณ ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ์–ด์š”. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์• ํ”Œ์˜ MVC ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! Apple's MVC ์• ํ”Œ์€ ์ „ํ˜•์ ์ธ MVC ํŒจํ„ด์—์„œ ๋ชจ๋ธ๊ณผ ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์„œ๋กœ ์˜์กด์ ์ธ ๊ฒƒ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ๋“ค๋งŒ์˜ MVC ํŒจํ„ด์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ์™€ ๋ชจ๋ธ์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ์–ด ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ณ  ์„œ๋กœ์— ๋Œ€ํ•ด ์•Œ ํ•„์š”๊ฐ€ ์—†๊ฒŒ๋” ๋งŒ๋“œ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜.... ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๊ด€์—ฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ MV - C ํŒจํ„ด์ด ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด์„œ.. 2021. 6. 3.
[Design Pattern] MVCํŒจํ„ด์ด๋ž€? (Model-View-Controller) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ํ”ํžˆ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ธ Model - View -Controller ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! MVC ํŒจํ„ด์ด๋ž€? "MVC๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์ด ํŒจํ„ด์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋ถ€ํ„ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ๊ฐ์  ์š”์†Œ๋‚˜ ๊ทธ ์ด๋ฉด์—์„œ ์‹คํ–‰๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์„œ๋กœ ์˜ํ–ฅ ์—†์ด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. MVC์—์„œ ๋ชจ๋ธ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋ทฐ๋Š” ํ…์ŠคํŠธ, ์ฒดํฌ๋ฐ•์Šค ํ•ญ๋ชฉ ๋“ฑ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‚ฌ์ด์˜ ์ƒํ˜ธ๋™์ž‘์„ ๊ด€๋ฆฌํ•œ๋‹ค." - ์œ„ํ‚ค ๋ฐฑ๊ณผ- ์žฅ์  ๋‹ค๋ฅธ ํŒจํ„ด์— ๋น„ํ•ด.. 2021. 6. 3.
[iOS] ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ…Œ์ด๋ธ”๋ทฐ ๋ฐ์ดํ„ฐ์†Œ์Šค ๋งŒ๋“ค๊ธฐ(Reusable TableView DataSource) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ…Œ์ด๋ธ”๋ทฐ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ์ œ๋„ˆ๋ฆญํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์„œ ๋ชจ๋“  ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ StoryBoard ์Šคํ† ๋ฆฌ๋ณด๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ…Œ์ด๋ธ”๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ  ์…€์— ์ด๋ฆ„์„ ํ‘œ์‹œํ•  ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•ด์คฌ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์…€์˜ ํด๋ž˜์Šค ์ด๋ฆ„์€ NameTableViewCell๋กœ ํ•ด์ฃผ์„ธ์š”! ( ๋‚˜์ค‘์— ๋งŒ๋“ค์–ด์ค„๊ฑฐ์—์š”!) identifier๋Š” ์…€ ์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์ด ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. NameTableVIewCell ์•„๋ž˜์™€ ๊ฐ™์ด ๋ ˆ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”. import UIKit class NameTableViewCell: UITableViewCell { @IBOutlet weak var name: UILabel! } Tabl.. 2021. 6. 3.
[iOS] ๋‚˜๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ(feat. CocoaPods) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ์ž…๋‹ˆ๋‹ค! ํ‰์†Œ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ธ์  ๊ฐ€ ๋‚˜๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์จ๋ด์•ผ์ง€ํ–ˆ๋Š”๋ฐ ๋“œ๋””์–ด ๊ทธ๋Ÿฐ ๋‚ ์ด ์˜ค๋„ค์š”... ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์ž๊ธฐ๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Terminal ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์‹  ๋’ค ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜์…”์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”! pod lib create ์›ํ•˜๋Š”์ด๋ฆ„ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด 5๊ฐ€์ง€ ์งˆ๋ฌธ์ด ๋‚˜์˜ฌ๊ฑฐ์—์š”. 1. ์–ด๋–ค ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‹ˆ? iOS /macOS -> iOS 2. ์–ด๋–ค ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ• ๊ฑฐ๋‹ˆ? Swift/Objc -> Swift 3. ๋„ˆ ๋ฐ๋ชจ์•ฑ ํฌํ•จํ• ๊ฑฐ์•ผ? -> Yes 4. ํ…Œ์ŠคํŠธ๋Š” ๋ญ˜๋กœ ํ• ๊ฑฐ์•ผ? Quick/None -> None 5. ๋ทฐ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ํ• ๊ฑฐ์•ผ? No ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜์‹œ๋ฉด.. 2021. 5. 30.
[iOS/API] Agora๋กœ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ์ฑ„ํŒ… ๊ตฌํ˜„ํ•˜๊ธฐ(feat.ํด๋Ÿฝํ•˜์šฐ์Šค) - 2 ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ €๋ฒˆ ๊ธ€์—์„œ Agora ํ”„๋กœ์ ํŠธ ์„ธํŒ…ํ•˜๋Š” ๋ฒ•์— ์ด์–ด์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์Œ์„ฑ์ฑ„ํŒ…์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! (ํ˜น์‹œ๋ผ๋„ ํ”„๋กœ์ ํŠธ ์„ค์ •๋ฒ•์„ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”!) Preview Pod Podfile์— ์•„๋ž˜์™€ ๊ฐ™์ด AgoraRtc๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”! (๋ฒ„์ „์€ ๋ฐ”๋€”์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ํ™•์ธํ•ด์„œ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.) pod ‘AgoraRtcEngine_iOS’, ‘~> 3.1.0’ Info.plist ๋งˆ์ดํฌ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ์„ค์ •ํ•ด์ฃผ์„ธ์š”! NSMicrophoneUsageDescription ๋งˆ์ดํฌ ์ข€ ์“ธ๊ฒŒ? StoryBoard AgoraViewController ๋จผ์ € ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ Embed ํ•ด์ฃผ์‹œ๊ณ  ์ด๋ฆ„์„ ์ ๋Š” ํ…์ŠคํŠธํ•„๋“œ์™€ ์ž…์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด ๋†“์•˜์Šต.. 2021. 5. 11.
[iOS/API] Agora ํ”„๋กœ์ ํŠธ ์„ธํŒ…ํ•˜๊ธฐ (feat.ํด๋Ÿฝํ•˜์šฐ์Šค) - 1 ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ๋ฐ”๋กœ "ํด๋Ÿฝํ•˜์šฐ์Šค" ์—์„œ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ์ฑ„ํŒ…์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ์„œ๋น„์Šค์ธ Agora ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! Agora Agora๋ž€? ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—๋Š” ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์–ด์š”. "์‹ค์‹œ๊ฐ„ ๋น„๋””์˜ค, ์Œ์„ฑ๋Œ€ํ™” ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ์œผ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‚ด์žฅ๋œ ์Œ์„ฑ ๋ฐ ๋น„๋””์˜ค ์ฑ„ํŒ…, ์‹ค์‹œ๊ฐ„ ๋…น์Œ, ๋Œ€ํ™” ํ˜• ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง•์„ ํฌํ•จํ•˜์—ฌ ํ’๋ถ€ํ•œ ์ธ์•ฑ ๊ฒฝํ—˜์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค." ์ฆ‰, ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™”์ƒ,์Œ์„ฑ ์ฑ„ํŒ… API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค ํšŒ์‚ฌ์ž…๋‹ˆ๋‹ค. Agora.io ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผํ•  ๊ฒƒ์€ Agora ํ™ˆํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด ํšŒ์›๊ฐ€์ž…์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Agora.io Real-Time Voice and Video Engagement The Real-Time Engagement Platf.. 2021. 5. 10.
[iOS] ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ํ™”๋ฉด ๋…นํ™”ํ•˜๊ณ  GIFํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ๋ธ”๋กœ๊ทธ ๊ธ€์ด๋‚˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์†Œ๊ฐœํ• ๋•Œ ์•ฑ ์‹คํ–‰ํ™”๋ฉด์„ ๋งŒ๋“ค์–ด์„œ ๋ณด์—ฌ์ค˜์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ƒ์—์„œ ํ™”๋ฉด์„ ๋…นํ™”ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! Simulator ๋จผ์ € ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์ผœ์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค ์™ผ์ชฝ ์ƒ๋‹จ์— ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ File์—์„œ Record Screen์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ์•„๋ž˜์™€ ๊ฐ™์ด ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉด ๋…นํ™”๊ฐ€ ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋…นํ™”๋ฅผ ๊ทธ๋งŒ๋‘๊ณ  ์‹ถ์„๋• ์œ„์˜ ๋นจ๊ฐ„ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋˜๋Š”๋ฐ ์•„๋ฌด๋Ÿฐ ์„ค์ •์—†์ด ์ €์žฅํ•˜๋ฉด .mp4 ํŒŒ์ผ๋กœ ์ €์žฅ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. GIF ๋นจ๊ฐ„ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์€ ํ™”๋ฉด์œผ๋กœ ๋„์›Œ์ง€๋Š”๋ฐ ๊ฑฐ๊ธฐ์— ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜๋ฉด GIFํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. GIF ์‹คํ–‰ํ™”๋ฉด Preferences ๋˜ํ•œ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ.. 2021. 5. 3.
[iOS/API] Algolia API๋ฅผ ์ด์šฉํ•ด์„œ C.R.U.D ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Algoria๋ผ๋Š” API์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ์•Œ๊ณ ๋ฆฌ์•„๋ž€?๐Ÿ˜€ ์•Œ๊ณ ๋ฆฌ์•„๋Š” SaaS(Search as a Service) ํ”Œ๋žซํผ์œผ๋กœ ์ฆ‰, ๊ฒ€์ƒ‰ ์„œ๋น„์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ,ํ”„๋ก ํŠธ์—”๋“œ,API ํด๋ผ์ด์–ธํŠธ ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์œผ๋กœ API๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์„œ๋น„์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ AI,Analytics ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์€ 1000๋ฒˆ ๊ฒ€์ƒ‰์— 1๋‹ฌ๋Ÿฌ์ž…๋‹ˆ๋‹ค. (๊ฒ€์ƒ‰ 1๋ฒˆ์— 1์›์ด๋‹ˆ... ์ข€ ๋น„์‹ผ๊ฑฐ ๊ฐ™๋„ค์š”...) ์•Œ๊ณ ๋ฆฌ์•„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ๊ฒƒ์ด ์ข‹์„๊นŒ์š”?๐Ÿค” 1. ์ž๋™์™„์„ฑ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ์•Œ๊ณ ๋ฆฌ์•„๋Š” ๊ฒ€์ƒ‰ ํ…์ŠคํŠธ์— ๋”ฐ๋ผ์„œ ๊ด€๋ จ์žˆ๋Š” ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ๊ด€๋ จ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ข‹์€ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 2.. 2021. 4. 21.
[iOS/Library] Swift๋กœ ๋ธ”๋กœ๊ทธ ์›น์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ(feat.Publish) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Swift๋กœ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ๊ฑฐ์—์š”! ์˜ˆ์ „๋ถ€ํ„ฐ Swift๋กœ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง„์งœ ๋งŒ๋“ค๊ณ ์‹ถ์—ˆ๋Š”๋ฐ ์ข‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ๊ฒŒ ๋˜์–ด์„œ ๊ณต์œ ํ•˜๋ ค๊ณ  ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Publish iOS๊ณ„(?)์—์„œ ์•„์ฃผ ์œ ๋ช…ํ•œ John Sundell ๋‹˜์ด ๋งŒ๋“œ์‹  Publish ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค! JohnSundell/Publish A static site generator for Swift developers. Contribute to JohnSundell/Publish development by creating an account on GitHub. github.com Swift Package Manager ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ฝ”์ฝ”์•„ํŒŸ์ด๋‚˜ ์นด๋ฅดํƒ€๊ณ ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ์Šค์œ„.. 2021. 4. 14.
[iOS] Callkit๊ณผ PushKit์„ ์ด์šฉํ•ด์„œ ์ „ํ™” ํ‘ธ์‰ฌํ•˜๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Callkit์„ ์ด์šฉํ•ด์„œ ์ „ํ™”์˜ค๋Š” ํ™”๋ฉด์„ ๋„์›Œ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Xcode ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์‹  ๋’ค Signing & Capabitities ๋กœ ์ด๋™ํ•˜์…”์„œ Background modes๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์‹œ๊ณ  Voice over IP๋ฅผ ์ฒดํฌํ•ด์ฃผ์„ธ์š”! ViewController ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ™์—ฌ๋„ฃ์œผ์‹  ๋’ค ์‹คํ–‰์‹œ์ผœ์ฃผ์„ธ์š”. (์‹ค์ œ ๋””๋ฐ”์ด์Šค๋กœ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค!) import UIKit import CallKit class ViewController: UIViewController, CXProviderDelegate { override func viewDidLoad() { let provider = CXProvider(configuration: CXProviderCo.. 2021. 4. 12.
[iOS/UI] PHAsset์„ ๊ณ ํ™”์งˆ ์ด๋ฏธ์ง€๋กœ ๋ฐ”๊พธ๊ธฐ(feat.deliveryMode) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด PHAsset์œผ๋กœ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ UIImage๋กœ ๋ณ€ํ™˜ํ• ๋•Œ ๊ณ ํ™”์งˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Storyboard ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ด๋ฏธ์ง€๋ทฐ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธํŒ…ํ•ฉ๋‹ˆ๋‹ค. ViewController ์ด๋ฏธ์ง€๋ทฐ๋ฅผ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. @IBOutlet weak var photo:UIImageView! ํฌํ† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์• ์…‹๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ allPhotos๋ฅผ ๋ฐ˜๋“ค์–ด์ค๋‹ˆ๋‹ค. var allPhotos:PHFetchResult? = nil ์• ์…‹๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ ํฌํ† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ถŒํ•œ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. func request() { PHPhotoLibrary.requestAuthorization { (status) in if status =.. 2021. 3. 31.
[iOS/UI] ํ…Œ์ด๋ธ”๋ทฐ ์•ˆ์— ์žˆ๋Š” ํ…์ŠคํŠธ๋ทฐ ๋†’์ด ๊ธ€์— ๋”ฐ๋ผ ์กฐ์ •ํ•˜๊ธฐ(Dynamic tableviewcell height by textview text) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•Œ์•„๋ณผ๊ฑด ํ…์ŠคํŠธ๋ทฐ์•ˆ์— ๊ธ€์”จ์— ๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”๋ทฐ์…€์˜ ๋†’์ด๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ •๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณผ๊ฑฐ์—์š”! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Storyboard ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ํ…Œ์ด๋ธ”๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ  ํ…Œ์ด๋ธ”๋ทฐ์…€ ์•ˆ์— ํ…์ŠคํŠธ๋ทฐ๋ฅผ ๋„ฃ์–ด์ฃผ์„ธ์š”! (ํ…์ŠคํŠธ๋ทฐ๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๊ฑธ ํ•œ ๋ˆˆ์œผ๋กœ ๋ณด๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”๋ทฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒ‰์„ ๊ฒ€์ •์ƒ‰์œผ๋กœ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.) ์˜คํ† ๋ ˆ์ด์•„์›ƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด์ฃผ์„ธ์š”! TableViewCell ํ…Œ์ด๋ธ”๋ทฐ์— ํ…์ŠคํŠธ๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”! class TableViewCell: UITableViewCell { @IBOutlet weak var textView: UITextView! override func awakeFromNib() { super.awakeFromNib() // Initializa.. 2021. 3. 30.
728x90
๋ฐ˜์‘ํ˜•