본문 바로가기

분류 전체보기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.