프로그래밍/Objective-C2010. 7. 16. 11:52
* 애니메이션의 또 다른 방법

  - 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 여야 한다




Posted by windship