반응형

iOS/Swift + Objective-c 80

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

[objective-c] OS 잠금 활성화 여부 조회 (암호, Touch ID(Face ID)

아이폰 OS 잠금 활성화 여부 조회하는 방법 아이폰 OS 암호 및 생체인증(Touch ID 및 Face ID)이 등록되어있는지 조회하는 방법이다. OS 잠금 활성화 여부 조회 시 헷갈리는 부분이 많으니 참고 사항을 꼭 읽어보길 바란다. 알고 나면 간단한 내용이지만, 아이폰을 사용하면서 가볍게 넘어갔다면 모를만한 내용이다. OS 잠금 활성화란, OS 암호가 설정되어 있으며 사용이 가능한 상태를 말한다. 참고 사항 아이폰에서 암호는 기본 사항이고, 생체인증은 선택 사항이다. 암호와 생체인증이 모두 등록되지 않은 상태에서 'Touch ID(Face ID) 및 암호' 메뉴 진입하여 1) '암호 켜기'를 하면 암호 등록이 가능하다. 2) 하지만 '지문(Face) 추가...'를 하면 생체인증 추가 후 암호까지 등록..

[Swift] 앱스토어 링크 열기 (App Store Link)

앱 업데이트 또는 리뷰 작성 등을 위해 앱에서 앱스토어 링크로 이동시켜야 하는 경우 사용한다. appId는 App Store Connect에서 확인할 수 있다. 1. App Store Connect 접속 appstoreconnect.apple.com https://appstoreconnect.apple.com/login?targetUrl=%2Fapps&authResult=FAILED appstoreconnect.apple.com 2. 나의 앱에서 앱 선택 3. 일반 정보 > 앱 정보 > Apple Id 확인 Apple Id는 숫자로 이루어짐 샘플 class func openAppStore(appId: String) { let url = "itms-apps://itunes.apple.com/app/" + ..

[iOS] WKWebView 자바스크립트 window.open, window.close 이벤트

WKWebView에서 window.open(), window.close()이 호출된 경우 아래 메서드로 처리가 가능하다. 자바스크립트의 위 이벤트들을 받기 위해서는 WKNavigationDelegate, WKUIDelegate 프로토콜을 선언해야 한다. @interface ViewController () { } [wkWebView setUIDelegate:self]; [wkWebView setNavigationDelegate:self]; 팝업이 열리는 경우 (window.open 또는 target="_blank") 이 경우 일반적으로 canOpenURL if문 안에서 새로운 팝업 웹뷰를 생성하여 그 웹뷰를 리턴하여 화면을 팝업 화면을 출력한다. 별도 팝업이나 처리가 필요하지 않은 경우는 nil을 리턴하면..

[iOS] WKWebView 기본 사용법 (프로젝트 내 html파일 출력)

WKWebView 기본 사용법 프로젝트 폴더에 있는 html 파일을 WKWebView에 표시하는 예제이다. 스토리보드에서 WKWebView를 추가하려면 iOS11 이상부터 가능하기 때문에 직접 추가하지 않는다. 스토리보드에서 웹뷰를 출력할 영역에 UIView를 추가하고 구현 파일에서 UIView 영역에 맞춰 WKWebView를 생성하는 방법으로 진행한다. 사용 방법 1. WebKet 추가 1) TARGETS > General > Frameworks, Libraries, and Embedded Content에서 추가 2) 헤더 파일 또는 구현 파일에서 추가 아래와 같이 WebKit.h를 import 한다 // ViewController.m #import * 테스트해보니 1번 과정 없이 2번만 진행해도 문제..

[Swift] log에 date, file name, function name, line 쉽게 출력하는 방법

Swift에서 콘솔창에 로그 쉽게 출력하는 방법이다. 보통 로그에 날짜, 파일명, 메소드명, 라인을 작성하려면 아래와 같이 작성해야한다. 1 print("\(Date()) \(#file.components(separatedBy: "/").last ?? "") \(#function) \(#line) 로그 내용") cs Date() : 날짜 출력 #file : 파일 출력. #file만 사용 시 파일이 있는 디렉터리가 모두 출력되기 때문에 components(separateBy:) 필수 #fuction : 메소드명 #line : 라인 출력 위와같이 작성하면 콘솔창에 이렇게 출력된다. #file만 사용 시 2020-10-11 16:31:33 +0000 /Users/dev/Desktop/workspace/ios/..

[iOS] Xcode 주석으로 자동 개발 문서 만드는 방법 (jazzy)

작성한 주석을 사용해서 자동으로 개발 문서를 만들어주는 jazzy라는 방법을 소개합니다. swift와 objective-c 모두 지원하며 swift는 비교적 간단하고, objective-c는 조금 귀찮은 작업이 필요합니다. objective-c 사용법으로 여러가지 방법이 있는데 그 중 가장 간단한 방법을 사용했습니다. 참고) jazzy github 주소 https://github.com/realm/jazzy realm/jazzy Soulful docs for Swift & Objective-C. Contribute to realm/jazzy development by creating an account on GitHub. github.com 0. 주석 추가 jazzy는 마크업 문법 형식에 따라 입력한 주..

[iOS] 엔터프라이즈 배포 (내부 배포용 enterprise)

내부 배포용 엔터프라이즈 배포 방법 앱스토어에 배포하려 하였으나 정책 등으로 인해 배포가 불가능한 경우, 엔터프라이즈 방식으로 배포가 가능하다. (단, 엔터프라이즈 계정 필요) 1. Xcode에서 Archive 진행 후 오른쪽 Distribute App 선택 2. Enterprise 선택 후 Next 선택 3. All compatible device variants 선택 및 Additional Options 체크 후 Next 선택 manifest 파일이 있어야 배포할 수 있다. 4. 3개의 URL에 아무 값이나 입력 후 Next 선택 App, Image URL을 입력해야 하지만, 어차피 나중에 수정하므로 지금은 아무 URL이나 입력해도 된다. 5. 배포용 인증서와 In House용 프로비저닝 프로파일을 ..

[iOS] Adhoc 용 IPA 생성 및 배포

Ad Hoc용 IPA 생성법 Ad Hoc 참고사항 한정된 인원의 사용자에게 내부 배포 또는 테스트 용으로 사용 iPhone, iPad, iPod touch, Apple Watch, Apple TV 각 100대씩 설정 가능하며, 멤버십 갱신 1년 기준 1. 프로비저닝 프로파일 생성 (Provisioning Profiles) 1-1. Apple Developer 에서 Profiles 선택 url : https://developer.apple.com/account/resources/profiles/list 1-2. + 선택 (프로파일 추가) 1-3. 목적에 따라 종류를 선택한다 iOS App Development : 개발용 Ad Hoc : 내부 배포용 AppStore : AppStore 업로드용 Develop..

반응형