애니메이션 (1) ------- CALayer

2367 단어
CALayer 및 UIView가 CALayer에 연관된 속성 CALayer에 대한 암시적 애니메이션 연결

하나.CALayer 및 UIView 연락처

  • iOS에서 볼 수 있는 것은 기본적으로 UIView(예를 들어 버튼, 그림, 텍스트 등)이다. UIView가 화면에 나타날 수 있는 이유는 CALayer 대상을 가지고 있기 때문이다.
  • UIView 객체를 만들 때 UIView 내부에 자동으로 도면층(즉 CALayer 대상)이 만들어집니다. UIView의 레이어 속성을 통해 이 층에 접근할 수 있습니다
  • UIView가 화면에 표시되어야 할 때drawRect: 방법을 사용하여 그림을 그리고 모든 내용을 자신의 도면층에 그립니다. 그림이 완성되면 시스템은 도면층을 화면으로 복사하여 UIView의 표시를 완성합니다.다시 말하면 UIView 자체는 디스플레이 기능을 갖추지 못하고 내부의 층에만 디스플레이 기능이 있다
  • CALayer는 사용자의 터치 이벤트를 처리할 수 없습니다.따라서 디스플레이가 상호작용이 필요하면 UIView를 선택하고 필요하지 않으면 UIView나 CALayer를 사용해도 된다. 후자의 성능이 좀 높고 이벤트 처리 기능이 적으며 더욱 가볍다.

  • 둘.CALayer 관련 속성

     、 
    @property CGRect bounds;
    
     (CGColorRef )
    @property CGColorRef backgroundColor;
    
     (CGColorRef )
    @property CGColorRef borderColor;
    
     
    @property CGFloat borderWidth;
    
     
    @property CGColorRef borderColor;
    
     ( CGImageRef)
    @property(retain) id contents;
    
    
     ( (0.5,0.5), anchorPoint )
    @property CGPoint position;
    
     (x,y 0-1), position 
    @property CGPoint anchorPoint;
    
    
    
     
    @property CATransform3D transform;
    
     
    CATransform3DMakeRotation(M_PI, 1, 0, 0);
     
    CATransform3DMakeTranslation(x,y,z)
     
    CATransform3DMakeScale(x,y,z);
    
     KVC .
     CATransform3DMakeRotation( ) .
    :
    NSValue *value = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1, 0, 0)];
    [_imageView.layer setValue:value forKeyPath:@"transform.scale"];
    

    셋.CALayer의 암시적 애니메이션

  • UIView 내부에는 기본적으로 하나의 CALayer가 연결되어 있으며 RootLayer라고 할 수 있으며 모든 RootLayer(수동으로 만든 CALayer)가 아닌 은식 애니메이션
  • 이 존재한다.
  • 암시적 애니메이션: Root Layer의 일부 속성이 수정되지 않은 경우 시스템은 기본적으로 자동으로 애니메이션 효과를 발생시킵니다. 이러한 속성(두 번째 속성)은 Animatable Properties(애니메이션 가능 속성)
  • 라고 합니다.
  • 스텔스 애니메이션 닫기(기본값은 켜기) 애니메이션 사무(CATransaction)를 통해 기본 스텔스 애니메이션 효과 닫기
  • [CATransaction begin];
    [CATransaction setDisableActions:YES];
    self.view.layer.position = CGPointMake(15, 15);
    [CATransaction commit];
    

    비고


    CALayer는 Quartz Core 프레임워크에 정의된 CGImageRef, CGColorRef 두 가지 데이터 유형이CoreGraphics에 정의된 UIColor, UIImage는 UIKit에 정의된
    그 다음으로 Quartz Core 프레임워크와 Core Graphics 프레임워크는 플랫폼을 뛰어넘어 사용할 수 있으며 iOS와 Mac OS X에서 모두 사용할 수 있지만 UIKit는 iOS에서만 사용할 수 있다
    이식성을 확보하기 위해 QuartzCore는 UIImage, UIColor를 사용할 수 없고 CGImageRef, CGColorRef만 사용할 수 있습니다.

    좋은 웹페이지 즐겨찾기