* 애니메이션의 또 다른 방법
- CATransition : 다른 프레임워크를 사용
- UICalloutView : 유저들이 만들어버린 것. 헤더파일 형태로 제공. 주로 풍선 도움말 같은 것을 만들 때 쓴다. 유저들이 만들었기 때문에 공식적인 애플의 SDK가 아니고, 각각의 소스마다 형태가 약간씩 다를 수 있다. 사실상 UIView에서 상속받아 만들어지는 형태가 대부분임.
* CATransition
- Core Animation Transition의 약자임.
- 뷰가 아니라 뷰를 담는 레이어에서 동작함
- Quartz 코어 프레임워크에서 제공되므로 QuartzCore.framework를 링크하고, QuartzCore/QuartzCore.h 파일을 import 해주어야 함
* CATransition 타입
- kCATransitionFade : 서서히 사라지는 효과. subtype 없음
- kCATransitionMoveIn : 레이어가 미끄러지듯이 나타남. subtype으로 kCATransitionFrom의 방향을 지정할 수 있음
- kCATransition
* 뷰 컨트롤러
- 뷰 관리 모델을 담당하는 가장 기본적인 클래스
- UITabBarController나 NavigationController도 이러한 UIViewController로 부터 상속 받아서 만들어진다
- 프로퍼티
UIView *view: 화면에 출력될 뷰
UINavigationController *navigationController
UITaBarController *tabBarController
UIViewController *modalViewController
NSString * title <- NavigationController에서는 제목으로 화면에 출력되며 일반적으로는 뷰의 이름입니다.
* 인터페이스 빌더를 써서 xib 파일에 만들어진 뷰(IBOutlet을 사용하는 뷰)는 awakeFromNib를 통해서 로드된다.
* 그냥 코딩으로 구현된 뷰(IBOutlet이 없는 뷰)는 loadView 메소드를 통해서 로드된다.
* 뷰 화면과 관련된 메소드
- viewDidLoad : 뷰가 로딩된 후 호출
- viewWillAppear:(BOOL)animated : 뷰가 화면에 나타나기 직전에 호출
- viewDidAppear:(BOOL)animated : 뷰가 화면에 나타나고 애니메이션이 종료된 후 호출
- viewWillDisappear:(BOOL)animated : 뷰가 화면에서 사라지기 직전에 호출
- viewDidDisappear:(BOOL)animated : 뷰가 화면에서 사라지고 난 후 호출
* 뷰의 방향 전환과 관련된 메소드
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- 이 메서드의 return 값이 YES이면 방향 전환을 지원하고 NO이면 지원하지 않는다
- UIInterfaceOrientation은 회전 방향 열거형이다
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration : 방향 전환이 이루어지기 직전에 호출되는 메소드
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation : 방향 전환이 끝난 후 호출되는 메소드
* Touch 이벤트
- UIResponder로부터 상속받는 모든 객체에서 발생하는 이벤트. 메소드 재정의만 하면 사용 가능하다
- UITouch: 터치에 관련된 정보를 저장하기 위한 클래스로 아래와 같은 멤버를 소유하고 있다
NSTimeInterval timestamp: 터치가 발생한 시간을 저장하는 프로퍼티(readonly)
UITouchPhase phase: 터치의 상태를 저장하는 프로퍼티(readonly)로 값은 UITouchPhaseBegan, UITouchPhaseMoved, UITouchPhaseStationary, UITouchPhaseBeganEnded, UITouchPhaseCancelied
NSUInteger tapCount: 터치 한 횟수
UIView *view: 터치가 최초로 발생한 뷰
UIWindow *window: 터치가 최초로 발생한 윈도우
(CGPoint)locationView:(UIView *)view <– view좌표계에서 터치한 위치
(CGPoint)previousLocationView:(UIView *)view <– view좌표계에서 터치한 이전 터치의 위치 정보
- UIEvent: 하나 이상의 터치 정보를 가지고 있는 클래스로 UITouch 객체들을 NSSet 의 형태로 저장해서 반환하며 아래와 같은 프로퍼티와 메서드 소유
NSTimeInterval timestamp: 터치가 발생한 시간을 저장하는 프로퍼티(readonly)
-(NSSet *)allTouches: 모든 UITouch 객체
-(NSSet *)touchesForWindow:(UIWindow *)window: window에서 발생한 모든 터치 객체
- UIResponder의 터치 이벤트 메서드
- (void)touchedBegan:(NSSet *) touches withEvent:(UIEvent *)event; <- 터치가 시작할 때 발생
- (void)touchedMoved:(NSSet *) touches withEvent:(UIEvent *)event; <- 터치해서 이동하는 중에 발생
- (void)touchedEnded:(NSSet *) touches withEvent:(UIEvent *)event; <- 터치를 마치면 발생
- (void)touchedCancelled:(NSSet *) touches withEvent:(UIEvent *)event; <-터치 중 시스템 이벤트가 발생한 경우 발생
- 멀티 터치는 객체의 MultipleTouch 속성이 YES 일 때만 가능
- 멀티 터치를 지원하기 위해서는 view의 User Interaction Enabled 속성이 YES, Multiple Touch 속성이 YES 여야 한다
'프로그래밍 > Objective-C' 카테고리의 다른 글
아이폰 OS 개발 자료 총정리 (0) | 2010.07.20 |
---|---|
#pragma mark로 코드 쉽게 구분하기 (0) | 2010.07.20 |
중앙정보학원 아이폰과정 9일차 - 2010년 7월 15일 (0) | 2010.07.15 |
중앙정보학원 아이폰과정 8일차 - 2010년 7월 14일 (0) | 2010.07.14 |
중앙정보학원 아이폰과정 6일차 - 2010년 7월 12일 (0) | 2010.07.12 |