반응형

iOS 126

[iOS] TextField, TextView 키보드에 가려지는 현상 해결, 포커스 이동 (IQKeyboardManager)

TextField, TextView 키보드에 가려지는 현상 해결 방법 TextField, TextView 포커스 위아래로 이동하는 방법 화면 하단에 있는 TextField 또는 TextView에 값을 입력하는 경우, 키보드에 가려져 입력한 값이 가려지는 현상 키보드 상단에 포커스 이동하는 버튼을 두고 싶은 경우 모두 아래 라이브러리로 쉽게 해결이 가능합니다. IQKeyboardManager https://github.com/hackiftekhar/IQKeyboardManager 지원 언어 Objective-c Swift 설치 방법 CocoaPods 또는 Carthage로 설치 (Carthage로 설치 방법은 위 github 링크에서 확인해주세요.) CocoaPods으로 설치 방법 // Podfile //..

[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(..

반응형