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

iOS14

[iOS] SnapKit๊ณผ Then ์‚ฌ์šฉํ•˜๊ธฐ iOS์—์„œ ์ฝ”๋“œ๋กœ ๋ทฐ ์งค ๋•Œ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ๋†’์—ฌ ์ฃผ์–ด ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๋Š” SnapKit๊ณผ Then ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“• SnapKit SnapKit๋Š” iOS์™€ OS X ๋ชจ๋‘์—์„œ ์˜คํ†  ๋ ˆ์ด์•„์›ƒ์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ DSL์ž…๋‹ˆ๋‹ค. DSL: ํŠน์ •ํ•œ ๋„๋ฉ”์ธ์— ํŠนํ™”๋œ ์–ธ์–ด. Requirements iOS 10.0+ / Mac OS X 10.12+ / tvOS 10.0+ Xcode 10.0+ Swift 4.0+ SnapKit ์‚ฌ์šฉ๋ฒ• SnapKit ์‚ฌ์šฉํ•˜๊ธฐ ์ „ labelTimer.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ lblTimer.widthAnchor.constraint(equalTo: view.w.. 2023. 3. 29.
[Xcode] Failed to prepare device for development ์—๋Ÿฌ ์‹ค๊ธฐ๊ธฐ๋กœ iOS ์•ฑ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚ฌ๋‹ค. failed to prepare device for development ์‹ค๊ธฐ๊ธฐ์˜ iOS ๋ฒ„์ „(16.4.1(a))์ด ํ˜„์žฌ Xcode๋ฒ„์ „(14.2) ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฒ„์ „์ด์—ˆ๊ณ  Xcode๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๋ คํ–ˆ๋”๋‹ˆ ํ˜„์žฌ OS๋ฒ„์ „(Monterey,12.6.1)์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์•„์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•ด์•ผ ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹จ๋‹ค… ๊ทธ๋ž˜์„œ OS์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  Xcode ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค.. ํœด๋Œ€ํฐ ์—…๋ฐ์ดํŠธ ํ•œ๋ฒˆ ํ•˜๋ฉด iOS ๊ฐœ๋ฐœ์ž๋Š” ์ค„์ค„์ด ์†Œ์„ธ์ง€์ฒ˜๋Ÿผ ์—‘์Šค์ฝ”๋“œ๊นŒ์ง€ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์—…๋ฐ์ดํŠธํ•˜๊ณ ๋‚˜๋ฉด ์ด์ „์—๋Š” ์ž˜ ๋˜๋˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒจ์„œ ํ•œ๋ฒˆ ์”ฉ ๊ตฌ๊ธ€๋งํ•˜๋ฉด์„œ ๊ณ ์ƒํ•ด์ค˜์•ผํ•˜๊ณ … ๊ธ‰ํ•œ ๋ฐ ๋ฒ„์ „ ์ตœ์‹ ํ™” ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ์ƒ๊ธฐ๊ณ  ๊ทธ๋Ÿฌ๋ฉด ์ž„์‹œ๋กœ๋ผ๋„ ์—…๋ฐ์ดํŠธ.. 2023. 3. 16.
[iOS] iOS Concurrency - 2. ๋””์ŠคํŒจ์น˜ ํ์˜ ์ข…๋ฅ˜์™€ ํŠน์„ฑ ํ์˜ ์ข…๋ฅ˜ (๋Œ€๊ธฐ์—ด์˜ ์ข…๋ฅ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋Š” ๋œป, ๋‹ค๋ฅธ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ, ์ž‘์—…์— ๋”ฐ๋ผ ์›ํ•˜๋Š” ํ๋กœ ๋ณด๋‚ด๊ธฐ) ๋””์ŠคํŒจ์น˜ํ(Dispatch Queue) (๊ธ€๋กœ๋ฒŒ) ๋ฉ”์ธ ๋””์ŠคํŒจ์น˜ํ ๊ธ€๋กœ๋ฒŒ ๋””์ŠคํŒจ์น˜ํ ํ”„๋ผ์ด๋น—(์ปค์Šคํ…€) ๋””์ŠคํŒจ์น˜ํ ์˜คํผ๋ ˆ์ด์…˜ํ(Operation Queue) ์›ํ•˜๋Š” ํ๋กœ ์ž‘์—…์„ ๋ณด๋‚ด๋ฉด ๊ฐ ํ๊ฐ€ ์•Œ์•„์„œ ๊ฐ์ž ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค! 1. ๋ฉ”์ธ ๋””์ŠคํŒจ์น˜ ํ ์œ ์ผํ•œ ํ•œ๊ฐœ ์ง๋ ฌ(Serial) ๋™์ž‘ ๋ฉ”์ธ์“ฐ๋ ˆ๋“œ ( 1๋ฒˆ ์“ฐ๋ ˆ๋“œ๋Š” ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ์ด์ž ๋ฉ”์ธํ์ด๋‹ค.) DispatchQueue.main.async ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ๋กœ ๋ณด๋‚ธ๋‹ค๋Š” ๋œป ๊ทธ๋ƒฅ print(”print something”)์ฝ”๋“œ๋งŒ ์žˆ์„ ๋•Œ ์‚ฌ์‹ค ์˜๋ฏธ์ ์œผ๋กœ๋Š” DispatchQueue.main.sync ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์˜๋ฏธ์ด๋‹ค. ( ํ•˜์ง€๋งŒ .. 2023. 3. 5.
[iOS] ์ œ์Šค์ณ๋กœ ๋“œ๋ก  ์กฐ์ข…ํ•˜๋Š” AI์•ฑ ๋งŒ๋“ค๊ธฐ (1) - ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ MediaPipe์™€์˜ ๊ณ ๋‚œ ๋ฏธ๊ตญ ํผ๋“€๋Œ€ํ•™๊ต ์ธํ„ด์‹ญ ํ”„๋กœ๊ทธ๋žจ์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ 4๊ฐœ์›”๋™์•ˆ ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ๊ณต์ง€๋Šฅ ๊ฐœ๋ฐœ์ž์™€ ํ•จ๊ป˜ ํ˜‘์—…ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์ฃผ์ œ๋Š” Vision AI๋ฅผ ์ด์šฉํ•˜์—ฌ ์†์˜ ์ œ์Šค์ฒ˜๋ฅผ ์ธ์‹ ํ•œ ๋’ค ๋“œ๋ก ์„ ์กฐ์ข…ํ•˜๋Š” iOS ์•ฑ ์ž…๋‹ˆ๋‹ค. ํ•˜๋‹จ์˜ ๊ตฌ์กฐ๋„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ธ๊ณต์ง€๋Šฅ ๊ฐœ๋ฐœ์ž๊ฐ€ MediaPipe๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ๋ชจ๋ธ์„ iOS์•ฑ์— ๋„ฃ์–ด ์‹ค์‹œ๊ฐ„ ์† ์˜์ƒ์˜ ์ œ์Šค์ฒ˜๋ฅผ ์ธ์‹ํ•˜๊ณ  ์†Œ์ผ“ ํ†ต์‹ ์„ ํ†ตํ•ด ๋“œ๋ก ์—๊ฒŒ ์กฐ์ข…์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ „์ฒด ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. iOS ์•ฑ ๊ตฌ์กฐ๋„ AVFoundation์„ ํ†ตํ•ด ์† ์˜์ƒ์˜ ํ”„๋ ˆ์ž„๋“ค์„ AI ๋ชจ๋ธ์— ๋„ฃ๊ณ  ์ธ์‹ ๋œ ์ œ์Šค์ฒ˜์˜ ์‹ ํ˜ธ๋ฅผ ์†Œ์ผ“ ํ†ต์‹ ์„ ํ†ตํ•ด ๋“œ๋ก ์— ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋“œ๋ก ์—์„œ ์ดฌ์˜ ๋˜๊ณ  ์žˆ๋Š” ์˜์ƒ๋“ค์€ ์†Œ์ผ“ ํ†ต์‹ ์„ ํ†ตํ•ด iOS์•ฑ์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.. 2023. 2. 22.
[iOS] pod init ์˜ค๋ฅ˜ ์‹œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• xcode ํ”„๋กœ์ ํŠธ์— pod init์„ ํ•ด์ฃผ๋ ค ํ–ˆ๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค. /Library/Ruby/Gems/~ :can’t modify frozen String (FrozenError) /Library/Ruby/Gems/~:[Xcodeproj] Unknown object version(56). (RuntimeError) ๊ตฌ๊ธ€๋ง ํ•˜์—ฌ > sudo gem update xcodeproj ๋ฅผ ํ•ด์ค€ ๋’ค์— ๋‹ค์‹œ pod init์„ ์‹œ๋„ํ•ด๋ณด๋‹ˆ ํ•ด๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ’ก sudo gem update xcodeproj์˜ gem์ด ๋ฌด์—‡์ผ๊นŒ? mac os ์—๋Š” ruby๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋˜์–ด์žˆ๊ณ  gem์€ ruby์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ด๋‹ค. ๐Ÿ’ก sudo gem update xcodeproj์˜ xcodeproj๋Š” ๋ฌด์—‡์ผ๊นŒ? ruby.. 2023. 2. 17.
[iOS] ์ปค์Šคํ…€ ํฐํŠธ ์ถ”๊ฐ€ ๋ฐฉ๋ฒ• OS ๊ฐœ๋ฐœ์‹œ์— ๊ธฐ๋ณธ ๋‚ด์žฅ ํฐํŠธ ๋ง๊ณ  ์ปค์Šคํ…€ ํฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ iOS UIKit ํ”„๋กœ์ ํŠธ์— ์ปค์Šคํ…€ ํฐํŠธ๋ฅผ ๋„ฃ์–ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! 1. Font ํด๋” ๋งŒ๋“  ํ›„ ๊ทธ ์•ˆ์— ํฐํŠธํŒŒ์ผ ๋„ฃ๊ธฐ ๋จผ์ € ํ”„๋กœ์ ํŠธ์— ๋‹ค์šด๋ฐ›์€ ํฐํŠธ .otf๋‚˜ .ttf ํŒŒ์ผ์„ Xcode ํ”„๋กœ์ ํŠธ์— ๋Œ์–ด๋‹ค ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ์š”. ํฐํŠธ๋ฅผ ํ•œ ํด๋”์— ๋„ฃ์–ด ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ €๋Š” Xcode ์™ผ์ชฝ ๋„ค๋น„๊ฒŒ์ด์…˜ ์˜์—ญ์—์„œ ํ”„๋กœ์ ํŠธ ํด๋” ๋ฐ‘์— Font ํด๋”๋ฅผ ์ƒ์„ฑ ํ•ด์ค€ ํ›„ ๊ทธ ์•ˆ์— ํฐํŠธ ํŒŒ์ผ์„ ๋Œ์–ด๋‹ค ๋„ฃ์–ด์คฌ์Šต๋‹ˆ๋‹ค. 2. Add to targets ์ฒดํฌํ•ด์ฃผ๊ธฐ ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ์— ๋Œ์–ด๋‹ค ์ถ”๊ฐ€ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œจ๋Š”๋ฐ Add to target์„ ์ฒดํฌํ•ด ์ค๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฒดํฌํ•ด์ฃผ์ง€์•Š์œผ๋ฉด ๋‚˜์ค‘์— ํฐํŠธ ํŒŒ์ผ๋งˆ๋‹ค ๋“ค์–ด๊ฐ€์„œ Targe.. 2023. 2. 16.