반응형

iOS 125

[iOS] framework 생성 및 사용 방법 (2 - 사용 방법)

iOS framework(프레임워크) 생성 및 사용 방법 ※ 해당 글에서는 objective-c로 설명하지만 swift도 거의 동일합니다. ※ 내용이 길어 두 개의 포스팅으로 나눴습니다. 해당 글에서는 framework 사용 방법을 설명합니다. 이전 포스팅 : https://es1015.tistory.com/433 목차 - framework 생성 방법 1. debug framework 생성 방법 2. release framework 생성 방법 - framework 생성 시 참고 사항 - framework 사용 방법 1. framework 파일을 추가하는 방법 - framework 파일 필요 2. framework 프로젝트를 추가하는 방법 - framework 프로젝트 필요 3. 클래스 및 메서드 호출 방..

[iOS] framework 생성 및 사용 방법 (1 - 생성 방법)

iOS framework(프레임워크) 생성 및 사용 방법 ※ 해당 글에서는 objective-c로 설명하지만 swift도 거의 동일합니다. ※ 내용이 길어 두 개의 포스팅으로 나눴습니다. 해당 글에서는 framework 생성 방법과 framework 생성 시 참고 사항을 설명합니다. 다음 포스팅 : https://es1015.tistory.com/434 목차 - framework 생성 방법 1. debug framework 생성 방법 2. release framework 생성 방법 - framework 생성 시 참고 사항 - framework 사용 방법 1. framework 파일을 추가하는 방법 - framework 파일 필요 2. framework 프로젝트를 추가하는 방법 - framework 프로젝..

[iOS] 디바이스 내 앱 데이터 확인 (AppData, Documents)

디바이스 내 앱 데이터를 확인하는 방법 1. Xcode > Window > Devices and Simulators 선택 2. 왼쪽 Devices에서 디바이스 선택 > 앱 선택 > 톱니바퀴 > Download Container... 선택 3. 저장할 폴더 선택 4. 생성된 파일 우클릭 > 패키지 내용 보기 선택 5. AppData 확인 가능! 참고사항 Devices and Simulators 창 > 디바이스 선택 > 프로젝트 선택 > 톱니바퀴 > Show Container 선택 시에는 아무런 데이터도 조회되지 않음

[iOS] iOS15 상태바 스타일이 초기화되는 문제 해결 방법

iOS15 이상에서 특이 케이스로 상태바 문제 한 가지를 발견했다. 초기 설정 Status bar style을 Light Content로 설정 문제 앱 실행 후 서스펜드 상태로 갔다가 다시 앱에 돌아왔을 때 상태바 텍스트가 검은색으로 변경되어 시계 등이 보이지 않음 ex) 홈 키 눌러서 홈 갔다가 앱 다시 오픈한 경우, 디바이스 잠금 후 해제하여 앱 다시 열린 경우 원인 경우에 따라 다르겠지만, 본인의 경우는 프로젝트 내 LaunchScreen이 존재하지 않아서 발생 해결 방법 프로젝트 내 LaunchScreen.storyboard 가 존재하고 info.plist에 설정되었는지 확인 없는 경우 아래와 같이 추가한다. 1. New File > Launch Screen > LaunchScreen.storyb..

iOS/오류 해결 2021.09.27

[iOS] ipa 파일로 프로비저닝 프로파일 확인하기

ipa 파일에 포함된 프로비저닝 프로파일 확인하는 방법은 아래와 같다. 준비물 ipa 파일 mac 확인 방법 1. ipa 파일 우클릭 > 다음으로 열기 > 아카이브 유틸리티로 열기 '다음으로 열기'에서 '아카이브 유틸리티'가 없는 경우: '기타...'를 선택하고 검색 화면이 나오면 '아카이브'를 검색해서 열기 진행 2. Payload 폴더 생성됨 3. Payload 폴더 내 앱 아이콘 우클릭하여 '패키지 내용 보기' 선택 4. embedded 이름의 프로비저닝 프로파일 확인 (embedded.mobileprovision)

[Swift / Objective-c] 카메라 권한 허용 상태 조회 및 요청

카메라 권한 허용 상태 조회 및 요청 방법 Info.plist에 Camera 권한 추가 및 AVFoundation import 하여 사용 필수사항 Info.plist에 Privacy - Camera Usage Description 추가 NSCameraUsageDescription 앱 기능을 사용하려면 카메라 권한이 필요합니다. 샘플 Swift import AVFoundation let status = AVCaptureDevice.authorizationStatus(for: AVMediaType.video) switch status { case .notDetermined: print("권한 요청 전 상태") // 권한 요청 AVCaptureDevice.requestAccess(for: .video) { g..

[iOS] 앱 서명 인증서? 생성, 내보내기 및 삭제 (signing certification)

앱 서명이란? (What is app signing?) 디바이스에 앱을 실행하고 앱 서비스를 사용하거나, 지정된 디바이스에서 테스트하거나 앱스토어에 제출하기 위해 꼭 필요한 과정 Xcode는 앱을 build 하고 archive 하는 과정에서 서명을 진행 계정 당 생성할 수 있는 인증서 개수가 제한됨 팀의 다른 사람과 공유하려면 서명 인증서를 내보내기 한 후, 다른 사람의 Mac에서 내보낸 파일을 두 번 클릭하여 키체인에 서명 인증서를 설치 계정 당 생성할 수 있는 인증서 개수 Type Apple Developer Program Enterprise Apple Development 2 2 Apple Distribution 3 2 주요 인증서 종류 Apple Development iOS, tvOS, watch..

[Swift / Objective-c] String 특정 문자열 치환, 제거 (replace)

iOS에서 특정 문자열을 치환하거나 제거하는 방법 Swift var string = "안녕하세요. 샘플입니다." string = string.replacingOccurrences(of: ".", with: "!") print(string)// 안녕하세요! 샘플입니다! Objective-c NSString *string = @"안녕하세요. 샘플입니다."; string = [string stringByReplacingOccurrencesOfString:@"." withString:@"!"]; NSLog(@"%@", string); // 안녕하세요! 샘플입니다! 특정 문자열을 제거할 경우는 withString에 ""(@"")를 넣어주면 된다.

[Xcode] Build error fat framework 에러 해결 방법

Xcode Build 시 아래와 같은 오류 발생 시 해결 방법 오류 Building for iOS, but the linked and embedded framework 'framework_name.framework' was built for iOS + iOS Simulator. 해당 오류는 framework가 iOS 실물 기기와 시뮬레이터를 모두 동작하게 하는 아키텍처를 지원하는 fat framework기 때문에 발생합니다. 해결방법 방법 1. .xcframework 파일 생성 방법 2. TARGETS > Project Name > Build Setting > Build Options > Validate Workspace를 Yes 설정 참고사항 본인은 소스코드를 전달받았을 때 해당 에러가 발생했습니다. ..

iOS/오류 해결 2021.08.23

[Swift / Objective-c] 자동 잠금 활성화/비활성화 (절전모드)

자동 잠금(절전모드) 상태 활성화/비활성화 처리하기 절전모드를 비활성화시키면 화면이 자동으로 잠금 되지 않음 참고 URL: https://developer.apple.com/documentation/uikit/uiapplication/1623070-idletimerdisabled Swift // 자동 잠금 비활성화 UIApplication.shared.isIdleTimerDisabled = true // 자동 잠금 활성화 UIApplication.shared.isIdleTimerDisabled = false Objective-c // 자동 잠금 비활성화 [UIApplication sharedApplication].idleTimerDisabled = YES; // 자동 잠금 활성화 [UIApplicatio..

[objective-c] Hex Color를 UIColor로 변환하기 (Hex to UIColor)

Hex 컬러를 UIColor로 변환하는 방법 Utils.m +(UIColor *)colorWithRGBHex:(NSUInteger)RGBHex alpha:(CGFloat)alpha { CGFloat red = ((CGFloat)((RGBHex & 0xFF0000) >> 16)) / 255.0f; CGFloat green = ((CGFloat)((RGBHex & 0xFF00) >> 8)) / 255.0f; CGFloat blue = ((CGFloat)((RGBHex & 0xFF))) / 255.0f; return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } 사용 방법 UIColor* color = [Utils colorWithREGHex..

[objective-c] UIView 그라데이션 넣기 (CAGradientLayer)

UIView에 gradient 넣는 방법 일반적으로 두 가지 색상으로 가로 또는 세로 그라데이션을 넣는 방법이다. 가로 그라데이션과 세로 그라데이션 적용 방법 Utils.m +(void)setVerticalGradient:(id)viewId topColor:(UIColor*)topColor bottomColor:(UIColor*)bottomColor { [self setGradient:viewId isVertical:YES firstColor:topColor secondColor:bottomColor]; } +(void)setHorizontalGradient:(id)viewId leftColor:(UIColor*)leftColor rightColor:(UIColor*)rightColor { [self s..

[Swift] dispatch async 사용법 (asyncAfter)

UI 변경 작업 등은 메인 스레드에서 진행을 해야 한다. 그럴 때 사용할 수 있는 것이 dispatch async이다. 일반적인 사용법 DispatchQueue.main.async { // code } 그리고 일정 시간 이후에 진행할 부분이 있다면 dispatchAfter를 사용한다. deadline은 시간을 설정하는 부분이며 .seconds를 사용해 초 단위로 시간 설정이 가능하다. 1 = 1초 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(1)) { // code }

[Swift] #pragma mark 사용 방법 (MARK)

Objective-c에서는 #pragma mark로 소스코드를 관리했다면 Swift에서는 // MARK:로 관리할 수 있다. 사용 방법 라인 없는 mark // MARK: func 라인 있는 mark // MARK:- func line 사용 예시 소스 코드 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } // MARK: func func func1() {} func func2() {} func func3() {} // MARK:- func line func funcLine1() {} func funcLine2() {} func funcLine3() {} } 결과 (..

[objective-c] prefix.pch 파일 추가하기 (Precompiled Header)

pch 파일이란? Precompiled Header (미리 컴파일된 헤더 파일) 해당 파일에 추가하는 코드는 프로젝트 모든 파일에 포함되어 컴파일된다. 사용 방법 1. 파일 추가 방법 1-1. 새로운 파일 추가 - Header File 선택 1-2. 파일명 입력 pch 파일명은 일반적으로 [프로젝트명]-Prefix.pch로 사용 1-3. 알림 메시지 확인 - Use .pch 선택 .h 파일이 아닌 .pch 파일을 생성할 것인지 묻는 메시지. pch 파일을 사용할 것이기 때문에 Use .pch를 선택 1-4. pch 파일 생성됨 2. pch 파일 경로 설정 2-1. 프로젝트 - TARGETS - Build Settings 진입 2-2. All, Combined 선택 2-3. 검색창에 prefix heade..

[objective-c] 로그 편하게 사용하기 (NSLog)

Xcode에서 로그 편하게 사용하는 방법 로그를 출력할 때 어떤 파일에서 출력한 로그인지, 어떤 Function에서 출력한 로그인지를 같이 출력할 수 있다. 출력할 수 있는 대표적인 정보들은 아래와 같다. 항목 사용법 예시 파일 경로 및 파일명 __FILE__ /Users/name/Desktop/ios/TestProject/TestProject/ViewController.m 파일명 __FILE_NAME__ ViewController.m Function명 __FUNCTION__ -[ViewController viewDidLoad] 파일 라인 __LINE__ 31 __FILE__은 실제 파일의 위치가 출력되기 때문에 잘 사용하지 않음 __FILE_NAME__은 __FUNCTION__ 출력 시 파일명이 출력되..

[objective-c] 프로토콜 구현 여부 체크 (Protocol)

프로토콜 구현 여부 체크 TestProtocol @protocol TestProtocol -(void)test; -(void)test1:(NSString*)str; -(void)test2:(NSString*)str str2: (NSString *)str2; -(void)test3:(NSString*)str str2: (NSString *)str2 str3:(NSString*)str3; @end 프로토콜 구현 여부 체크 respondsToSelector를 사용하여 프로토콜 구현 여부를 체크할 수 있다. _testProtocol이 nil인 경우, @selector에 있는 함수가 구현되지 않은 경우는 else 구문을 탄다. if ([_testProtocol respondsToSelector:@selector(..

[iOS] ERROR ITMS-90339: UIApplicationExitsOnSuspend Error 해결 방법

App Store 배포 시, 아래와 같은 오류가 발생했다. 오류 App Store Connect Operation Error ERROR ITMS-90339: "This bundle is invalid. The Info.plist contains an invalid key 'UIApplicationExitsOnSuspend' in bundle App [App.app]" 오류 내용: Info.plist에 포함된 UIApplicationExitsOnSuspend 키가 deprecated 되어 사용 불가 참고 URL: developer.apple.com/documentation/ Xcode에서 info.plist 파일을 보면 아래와 같은 키를 확인할 수 있다. Info.plist - Property List에서..

iOS/오류 해결 2021.04.04
반응형