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. ์ด์ 1 2 3 ๋ค์