본문 바로가기

아이폰 개발186

컴포지션 컴포지션이란 무엇인가? 컴포지션은 각기 다른것으로 큰 하나를 만들 수 있는 것을 말한다. 소프트웨어로 외발 자전거를 만든다고 할 때, 페달 객체와 타이어 객체를 조립해 구성하는 것도 컴포지션이라 할 수 있다. 오브젝티브 c 에서는 객체를 가리키는 인스턴스 변수로 컴포지션을 만들 수 있다. 참고 앞의 포스팅 Shape Object 프로그램에서 이미 컴포지션을 사용했다. Shape 클래스는 사각형과 색깔로 된 요소를 사용하고 있다. 그러나 엄밀히 따지면 객체를 사용하는 것만 컴포지션에 해당한다. int, float, enum, struct 와 같은 기본타임은 그냥 객체의 한부분이라고 생각하면 된다. NSLog 수정 NSLog()는 객체를 출력하기 위해 %@ 형식 지정자를 사용한다. %@지정자를 처리할 때 객.. 2021. 2. 22.
iOS UIBezierPath 예제 - 그림 그리기 iOS UIBezierPath 예제 - 그림 그리기 선분 그리기 MyView.h #import NS_ASSUME_NONNULL_BEGIN @interface MyView : UIView @end NS_ASSUME_NONNULL_END MyView.m #import "MyView.h" @implementation MyView - (void)drawRect:(CGRect)rect { // Drawing code NSLog(@"drawRect 호출됨."); //1.UIBezierPath 객체 생성 UIBezierPath *path = [[UIBezierPath alloc]init]; //2.UIBezierPath 객체관련 속성 설정 path.lineWidth = 4; path.lineJoinStyle = kC.. 2021. 2. 22.
CGContextRef 예제 - 그림 그리기 CGContextRef 예제 - 그림 그리기 참고로 CGContextRef 는 UIView를 상속받은 클래스에서 사용할 수 있다. #import #import NS_ASSUME_NONNULL_BEGIN @interface MyView : UIView @end NS_ASSUME_NONNULL_END #import "MyView.h" @implementation MyView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { NSLog(@"initWithFrame 호출"); } return self; } - (instancetype)initWithCoder:(NSCoder *)coder { s.. 2021. 2. 22.
iOS 카테고리 예제 - (UIColor 확장하기) iOS 카테고리 예제 - (UIColor 확장하기) 상속 : 상속은 슈퍼 클래스의 변수와 메소드(기능)을 서브클래스가 다 가지면서도, 슈퍼클래스에 없는 기능을 서브클래스가 추가할 수 있다. 즉, 위에서 아래로 확장이라고 할 수 있다. 카테고리 : 이미 있는 클래스에 기능을 더 추가한다. 상속보다 사용하기가 편하다. 필요한 기능만 카테고리를 이용해서 만들면 된다. UIColor 확장 예제 UIColor에 THAdditions 라는 카테고리를 만들 것이다. @interface UIColor (카테고리 이름) UIColor+THAdditions.h //UIColor 의 카테고리 추가 @interface UIColor (THAdditions) //다크 칼러 - (UIColor *)darkerColor; //라이.. 2021. 2. 21.
iOS AVPlayer 영상 재생 예제 iOS AVPlayer 영상 재생 예제 CustomPlayerController.h 스토리보드에서 만든 버튼 및 뷰, 슬라이더를 컨트롤러와 이어주고 필요한 메소드 선언. #import #import NS_ASSUME_NONNULL_BEGIN @interface CustomPlayerController : UIViewController @property (strong, nonatomic) IBOutlet UIButton *doneButton; //닫기 @property (strong, nonatomic) IBOutlet UIView *controlView; //컨트롤러 뷰 @property (strong, nonatomic) IBOutlet UIButton *playBackButton; //재생 버튼 @p.. 2021. 2. 18.
iOS CLLocation 위도경도, 속도, 이동거리 구하기 iOS CLLocation 위도경도, 속도, 이동거리 구하기 #.아래 포스팅 이어서 작성 iOS CoreLocation 공통 모듈 - 싱글톤 [STEP 1] 이전위치, 새 위치, 거리 , 속도를 위한 변수 추가 @property (nonatomic , strong) CLLocation *oldLocation; @property (nonatomic , strong) CLLocation *mynewLocation; @property (nonatomic , strong) NSString *distance; @property (nonatomic, strong) NSMutableArray *cLLocationArray; @property double speed; [STEP 2] 위치값 저장을 위한 배열 초기화 _.. 2021. 2. 18.
iOS 애플 중간 인증서 애플 중간 인증서 Apple Worldwide Developer Relations Intermediate Certificate 어쩌다가 한번씩 xcode 에서 앱 빌드하다가 xcode cannot launch bundleid... 이런식으로 팝업창이 뜬는경우가 있다. 빌드는 정상적으로 실행되고, 설치되 되는데 앱 실행시 앱이 죽어버린다. 문제는 애플 중간인증서다. 이 인증서가 없으면 애플 개발자 사이트에서 생성한 인증서를 키체인에서 열어보면 "신뢰되지 않은 인증서"라고 떠있을 것이다. 그것도 빨간글씨로... 인증서를 더블클릭한 후에 모두 신뢰하기 를 선택해도 마찬가지다. 원인은 애플에서 발행하는 애플 중간인증서가 삭제되었거나 만료되었거나 등등 문제가 생겼기 때문이다. xcode 14 이상 버전에서는 자동.. 2021. 2. 18.
iOS 애플로그인 - Apple Login 예제 iOS 애플로그인 - Apple Login 예제 LoginVC.h 0.Target => Siging & Capabilitis => Sign In with Apple 체크 1.AuthenticationServices 라이브러리 import 2.ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding 프로토콜 채택 3.스택뷰 IBOutlet 변수 생성 #import #import NS_ASSUME_NONNULL_BEGIN @interface LoginVC : UIViewController @property (strong, nonatomic) IBOutlet UIStackView *stackView; @end.. 2021. 2. 17.
iOS KeyChain 예제 - 키체인 iOS KeyChain 예제 KeychainItemWrapper.h #import /* The KeychainItemWrapper class is an abstraction layer for the iPhone Keychain communication. It is merely a simple wrapper to provide a distinct barrier between all the idiosyncracies involved with the Keychain CF/NS container objects. */ @interface KeychainItemWrapper : NSObject // Designated initializer. - (id)initWithIdentifier: (NSString *)ide.. 2021. 2. 16.