์ ์ฒด ๊ธ196 [iOS/Swift] Localization ์ฝ๋๋ก ๋ค๊ตญ์ด ์ฒ๋ฆฌ PROJECT > Info ํญ > Localization ์น์ > + ๋ฒํผ ๋๋ฌ์ ์ธ์ด ์ถ๊ฐ New File > Strings File ์ถ๊ฐ ์์ฑ๋ ํ์ผ ํ์ธ > ์ค๋ฅธ์ชฝ File ์ธ์คํํฐ ํ์ธ Localize ๋ฒํผ > ์ธ์ด ์ ํ > Localize ๋ฒํผ ํด๋ฆญ ๋ค์ File Inspector ํ์ธํ๋ฉด Localization ์น์ ์์ญ์ ์ถ๊ฐํ ์ธ์ด ๋ชฉ๋ก์ด ํ์๋จ ๋ค๊ตญ์ด ์ฒ๋ฆฌํ ์ธ์ด ์ ํํ๋ฉด Project Navigator์์ ์ธ์ด ๋ณ๋ก Localizable ์์ฑ๋ ๊ฒ ํ์ธ ๊ฐ๋ฅ ๋์์ด์์ด, ํ๋ฉด๋ณ๋ก ๋ณ์ญ๋์ด์ผ ํ๋ ๋จ์ด๊ฐ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ํค๊ฐ์ ๊ณ ์ ๊ฐ์ผ๋ก ์์ฑํด ์ฃผ๋ ๊ฒ์ด ์ข์ String Extension extension String { var localized: String { return NSL.. 2023. 2. 23. [iOS/Swift] pt ๋จ์ ๋ง๊ณ px ๋จ์๋ก ๊ณ์ฐํ๊ธฐ 1 pixel ์ด๋ฏธ์ง๋ฅผ ํ์ฑํ๋ ๊ฐ์ฅ ์์ ์ ์ฌ๊ฐํ ํฝ์ ํฌ๊ธฐ์ ๋ณํ ๋ ํฐ๋ ๋์คํ๋ ์ด ์ด์ ์ 1์ธ์น ์ฌ๊ฐํ์ ๋ค์ด๊ฐ๋ ํฝ์ ์ 163๊ฐ ๋ ํฐ๋ ๋์คํ๋ ์ด ์ถ์ ํ 1์ธ์น ๋์คํ๋ ์ด์ 326 ํฝ์ ์ ์ ์ฅํ ์ ์๊ฒ ๋จ (1์ธ์น ์์ ๋ค์ด๊ฐ๋ ํฝ์ ์ ๊ฐฏ์๊ฐ ๋ง์์ง๋ฏ๋ก ํฝ์ ์ ์๋์ ์ธ ํฌ๊ธฐ๊ฐ ์์์ง ๊ฒ) ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ 1pt์ ๊ฐ๋ ๋์ 1pt ๊ฐ์ ํฌ๊ธฐ์ ๋ฒํผ์ ๊ทธ๋ฆฌ๊ธฐ ์ํด์ @1x๋ 1๋ฐฐ, @2x๋ 2๋ฐฐ์ ํฝ์ ๊ฐ์ด ํ์ํจ 1pt = scale * 1px ex 10 ํฝ์ ์ ๊ฐ์ ์ป๊ณ ์ถ์ ๊ฒฝ์ฐ ์ค์ผ์ผ๋ก ๋๋ let k10PX: CGFloat = (10.0 / UIScreen.main.scale) iPhone 14 Pro Max์ ๊ฒฝ์ฐ @3x์ด๋ฏ๋ก iPhone 14 Pro Max์์์ 1px๋ ์ค์ .. 2023. 2. 6. [iOS/Swift] SafeArea ๋์ด ๊ตฌํ๊ธฐ viewController์ view view.safeAreaInsets.top view.safeAreaInsets.bottom 0.0 0.0 20.0 viewDidLoad, viewWillAppear, viewDidAppear์์ ๊ฐ๊ฐ view์ safeAreaInsets์ผ๋ก ์ ๊ทผํ top์ ๊ฒฐ๊ณผ viewDidAppear์์ ์ ํํ ๊ฐ์ ์ป์ ์ ์์ ๋๋ถ๋ถ UI๋ฅผ viewDidLoad์์ ์ค๋นํ๋ฏ๋ก, viewDidAppear์์ ํ์ํ ์ํฉ์ด ์๋ ๊ฒฝ์ฐ ์ ํํ safeArea์ ๋์ด๋ฅผ ๊ตฌํ๊ธฐ ์ด๋ ค์ UIApplication.shared.windows.first iOS 15.0 ๋ฏธ๋ง ๋ฒ์ ์์ ์ฌ์ฉ๊ฐ๋ฅ UIApplication.shared.windows.first?.safeAreaInsets.top UI.. 2023. 2. 5. [iOS/Swift] UIDevice ๋ฒ์ , UUID, ๊ธฐ๊ธฐ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ UIDevice current ์ธ์คํด์ค๋ก ํ์ฌ ๊ธฐ๊ธฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ ์ฌ ์ ์์ ์ด๋ฆ, ๊ธฐ๊ธฐ ๋ชจ๋ธ, ์ด์์ฒด์ ์ด๋ฆ๊ณผ ๋ฒ์ ๋ฑ์ ์ ๋ณด๋ฅผ ์ป์ ๋ ์ฌ์ฉํจ ๋ฌผ๋ฆฌ์ ๋ฐฉํฅ(๊ธฐ๊ธฐ๋ฅผ ๊ฐ๋ก, ์ธ๋ก๋ก ๋๋ ๊ฒ)๊ณผ ๊ฐ์ ๊ธฐ๊ธฐ์ ์ํ ๊ฐ์ ๋ณํ๋ฅผ ์ถ์ ํ๋๋ฐ ์ฌ์ฉํ ์ ์์ ๋ฒ ํฐ๋ฆฌ ์ํ์ ๋ํ ์ ๋ณด์ ๊ทธ ๋ณํ๋ฅผ ์ถ์ ํ ์ ์์ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ธฐ๋ฅผ ์ก๊ณ ์ผ๊ตด์ ๊ฐ๊น์ด ๊ฐ์ ธ๊ฐ๋์ง๋ฅผ ํ์ธ ํ ์ ์๋ ๊ทผ์ ์ผ์์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํจ import UIKit class DeviceInfo { static var sharedObject: DeviceInfo = DeviceInfo() /// Device Name (e.g. "iPhone 14 Pro") public func getDeviceName() -> String? { return U.. 2023. 2. 4. [iOS/Swift] infoDictionary ์ฑ ๋ฒ์ , ๋ฒ๋ค ์์ด๋ ๊ฐ์ ธ์ค๊ธฐ infoDictionary๋ ํค ๊ฐ์ผ๋ก ๊ฐ์ ์ ๊ทผ ํ ์ ์๋ ๋์ ๋๋ฆฌ ํ์ ํ๊ฒ > Info ํญ์ ์๋ Info.plist ํ์ผ๋ก ๋ถํฐ ์์ฑ๋์ด ํด๋น ๊ฐ์ ์ ๊ทผ ํ ์ ์์ infoDictionary์ ํค๊ฐ์ Info.plist์ Raw Keys ์ผ๋ก ์ค์ ํด์ ํ์ธํ ์ ์์ ์ฃผ๋ก CFBundleIdentifier, NSMainNibFile, NSPrincipalClass ํค ๊ฐ์ด ์ฌ์ฉ๋จ ์ฑ ๋ฒ์ ํ์ธ /// App Version public func getCurrentAppVersion() -> String? { guard let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String else { return .. 2023. 2. 4. [Xcode/Git] ํฐ๋ฏธ๋๊ณผ ๊น์ผ๋ก Xcode ๊ด๋ฆฌํ๊ธฐ git ๊ด๋ฆฌ์ ์ฌ์ฉํ๊ธฐ ์ฌ์ ๋ ๊ฒ ์์๋๋ก ๋์ดํ๋ฉด Github Desktop > Terminal > Sourcetree ์๋๊ฑฐ ๊ฐ๋ค ํ๋์ ์ปดํจํฐ์ ๊ฐ์ธ, ํ์ฌ ๊ณ์ ์ ๋๊ณ ์ฐ๋ค๋ณด๋ ์์คํธ๋ฆฌ๋ ์ฌ์ฉํ ๋๋ง๋ค ๊ผฌ์ด๊ณ ๊ผฌ์ฌ์ ํฐ๋ฏธ๋๋ก ๋ฏธ๋ฆฌ ์ธํ ์ ํด๋๊ณ ์ฌ์ฉํ๋ ํธ,, ํ.. ๊นํ๋ธ ๋ฐ์คํฌํ์ด ๊ด๋ฆฌํ๊ธฐ ๊ต์ฅํ ํธ๋ฆฌํ์ง๋ง ํฐ๋ฏธ๋์ ์ฌ์ฉํด ๋ด ์๋ค ์๋ํ๋ฉด ๋ด๊ฐ ๋๊ณ ๋๊ณ ์ฐธ๊ณ ํด์ ๋ณด๊ธฐ ์ํด! 1. ํ๋ก์ ํธ ์์ฑ ํ ์ด๋ Xcode ํ๋ก์ ํธ ์์ฑ > ํฐ๋ฏธ๋์์ cd ๋ช ๋ น์ด๋ก ์ด๋ cd /Users/์ฌ์ฉ์์ด๋ฆ/Desktop/PersonalSwiftStudy/Archive ์ ๋ช ๋ น์ด ์ ๋ ฅ 2. git ํ์ผ ์ง์ฐ๊ธฐ rm -rf .git ๊ธฐ์กด์ ๋ฑ๋ก๋ ๊ณ์ ์ ์ํด Xcode ์์ฑ ์ ๋ฑ๋ก๋๋ฉด์ ํด๋น ๋๋ ํ ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ฉ.. 2023. 2. 4. [iOS/Swift] ์ฑ๊ธํค ๊ฐ์ฒด ์์ฑ Singleton ํด๋์ค ์ ์ class Singleton { static var sharedObject: Singleton = Singleton() } ์ฌ์ฉ๋ฐฉ๋ฒ Singleton.shared.getUUID() getUUID๋ผ๋ ํจ์๋ฅผ ์ ์ํ์ ๊ฒฝ์ฐ ์์ ๊ฐ์ด ์ฌ์ฉํจ 2023. 2. 4. [iOS/Swift] UIPresentationController custom modal transition style์ ๊ฒฝ์ฐ animator ๊ฐ์ฒด ์ธ์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ view controller๊ฐ presenting ๋๊ธฐ ์ ์ UIPresentationController์ ์์คํ ์ด presentation controller์ ์์ฑํ๋ฉฐ view controller๊ฐ dismiss ๋๊ธฐ ์ ๊น์ง ์ฐธใ ๋๋ฅผ ์ ์งํ๊ฒ ๋จ presentation controller๋ animator object์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋์ด์๋ ์กด์ฌํ ์ ์๊ธฐ ๋๋ฌธ์ presentation controller๋ฅผ ์ฌ์ฉํจ ๋ง์ฝ ์ปค์คํ ํธ๋์ง์ ์ค์ ํ๋ฉด์ ๋ํ๋๋ view controller์ ๋ท ๋ถ๋ถ์ ๊ทธ๋ฆผ์๊ฐ ๋ํ๋์ผ ํ๋ค๋ฉด presentation controlelr๋ shadow๋ทฐ๋ฅผ ์์ฑํ.. 2023. 1. 29. [iOS/Swift] UIViewControllerTransitioningDelegate view controller ์ฌ์ด์์ interactive transition ์ํ ๋ฉ์๋์ ๋ชจ์ modalPresentationStyle ์์ฑ์ .custom์ผ๋ก ์ง์ ํ๊ณ transitioningDelegate ํ๋กํผํฐ๋ฅผ ์ง์ ํด์ผ ํจ presnet, dismiss์ ์ฌ์ฉ๋ animator ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ์ง์ ํ ์ ์์(push, pop ๋ ๋์ผํ๊ฒ ๊ฐ๊ฐ ์ง์ ํ ์ ์์) transition์ ์ฌ์ฉ๋๋ animator ๊ฐ์ฒด๋ UIViewControllerAnimatedTransitioning protocol์ ๋ฐ๋ผ์ผ ํจ ์ ๋๋ฉ์ด์ ์ ํ์ด๋ฐ์ ์ปจํธ๋กค ํ๊ธฐ ์ํด ์ฌ์ฉ์์ ํฐ์น ์ด๋ฒคํธ ๊ฐ์ ๋ฐ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ์ฉ์ ์ธํฐ๋ ์ ์ ์ด์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ UIViewControllerInteractiveTransitionin.. 2023. 1. 29. [iOS/Swift] UIViewControllerAnimatedTransitioning ์ ๋ฆฌ custom view controller transition ์ ์ํ ํ๋กํ ์ฝ ๋ทฐ ์ปจํธ๋กค๋ฌ์ ํ๋ฉด ์ ํ์ ์ํ ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ animator ๊ฐ์ฒด๋ฅผ ์ ์ํ ์ ์์ ์ธํฐ๋ ํฐ๋ธ ํธ๋์ง์ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ animator ๊ฐ์ฒด๋ฅผ ํ์ด๋ฐ์ ์ ์ดํ ์ ์๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๊ฒฐํฉํด์ผ ํจ ์ด ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ ์ํด์ transitionDuration(using:), animateTransition(using:) ์ ๊ตฌํํด์ผ ํจ UIViewControllerTransitioningDelegate ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๊ฐ์ฒด์์ animator ๊ฐ์ฒด๋ฅผ ์์ฑํจ ๋ทฐ ์ปจํ๋กค๋ฌ ํ๋ฉด ์ ํ ์ presnet ํ ๊ฒฝ์ฐ UIModalPresentationStyle.custom์ผ๋ก ์ง์ ํด ์ค animator๊ฐ์ฒด๋ UIViewCont.. 2023. 1. 29. [Pod/iOS] Pod ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑํ๊ณ ๊ด๋ฆฌํ๊ธฐ ํฐ๋ฏธ๋์์ pod lib create [pod name] https://guides.cocoapods.org/making/using-pod-lib-create ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ํ๋ซํผ์ ์ ํํ ์ ์๋ ๋ฌธ๊ตฌ๊ฐ ๋์ด ์ง๊ธ์ ๋ก์ปฌ์์ ์์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์์ ํ ๊ฐ์ ์ด๋ฆ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ง ์์ํ, ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋๋ค What platform do you want to use?? [ iOS / macOS ] > iOS ์ด๋ iOS ์ ํ (๋งฅ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ๋ค๋ฉด macOS๋ฅผ ์ ํํ๋ฉด ๋จ) What language do you want to use?? [ Swift / ObjC ] > Swift ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ ์ธ์ด ์ ํ Would you like to include a demo .. 2023. 1. 29. [iOS Swift] Deeplink ์ฌ์ฉํ๊ธฐ 1. URL scheme ์ง์ ํ๊ธฐ 2. ๋ฅ๋งํฌ ์ง์ ํ๊ธฐ 1. URL scheme ์ง์ ํ๊ธฐ URL Scheme์ url์ด ์์๋๊ธฐ ์ url ์์ ๋ถ๋ ํ๋ฆฌํฝ์ค ์คํธ๋ง (์๋ฅผ ๋ค์ด https:// ๊ฐ ์์) ์ฑ์ด ์ค์น๋์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์์ url์ด์ง๋ง ์ฌํ๋ฆฌ์์ ๋์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ด ์ฑ์ ์ง์ ๋ ๋์์ ์ํํ๋๋ฐ ์ฌ์ฉํจ (1) ์ฑ์์ URL Scheme ๋ฑ๋กํ๊ธฐ Info.plist ํ์ผ์ URL scheme ๋ฑ๋ก Info.plist > URL Types ์น์ Identifier์ ์ฌ์ฉ์ ์ ์ ์คํด์ ์ ๋ ฅํด ์ค Identifier๋ ๋ฒ๋ค id์ ๋์ผ (2) Schene delegate ๋ฉ์๋ ์ ์ํ๊ธฐ ์ฑ์ ๋ฅ๋งํฌ ์ฒ๋ฆฌ ์์ฒญํ๊ธฐ ์ฝ๋๋ ๋ฒจ์์ ํด๋น ์ฝ๋ ๋์ ์ํค๋ฉด ๋จ ํน์ ์ฌํ๋ฆฌ์ ์ฃผ์์ฐฝ์์ ์ง์ .. 2022. 12. 29. ์ด์ 1 2 3 4 5 6 7 8 ยทยทยท 17 ๋ค์