UI 진급 14 CALayer

3134 단어

CALayer

  • iOS에서 네가 볼 수 있는 것은 기본적으로 모두 UIView이다. 예를 들어 단추, 텍스트 라벨, 텍스트 입력 상자, 아이콘 등이다. 이것들은 모두 UIView
  • 이다.
  • 사실 UIView가 화면에 나타나는 이유는 내부의 한 층 때문이다
  • UIView 객체를 만들 때 UIView 내부에 자동으로 도면층(즉 CALayer 대상)이 만들어집니다. UIView의 레이어 속성을 통해 이 층에 접근할 수 있습니다
  • @property(nonatomic,readonly,retain) CALayer *layer;
    
  • UIView가 화면에 표시될 때drawRect: 방법을 사용하여 그림을 그리고 모든 내용을 자신의 도면층에 그립니다. 그림이 완성되면 시스템은 도면층을 화면으로 복사하여 UIView 표시를 완성합니다
  • 다시 말하면 UIView 자체는 디스플레이 기능을 갖추지 못하고 내부의 층에만 디스플레이 기능이 있다
  • CALayer의 기본 사용

  • CALayer 객체를 조작하면 UIView의 일부 외관 속성을 쉽게 조정할 수 있다. - 예를 들어
  • 섀도우
  • 필렛 크기
  • 프레임 폭 및 색상
  • … …
  • 도면층에 애니메이션을 추가하여 비교적 시크한 효과를 실현할 수 있다
  • CALayer 속성

    // 
    @property CGRect bounds;
    // ( , anchorPoint )
    @property CGPoint position;
    // (x,y 0-1), position 
    @property CGPoint anchorPoint;
    // (CGColorRef )
    @property CGColorRef backgroundColor;
    // 
    @property CATransform3D transform;
    // (CGColorRef )
    @property CGColorRef borderColor;
    // 
    @property CGFloat borderWidth;
    // 
    @property CGColorRef borderColor;
    // ( CGImageRef)
    @property(retain) id contents;
    
    

    CALayer에 대한 궁금증

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

    UIView 및 CALayer 선택

  • CALayer를 통해 UIImageView와 같은 인터페이스 효과
  • CALayer와 UIView가 모두 같은 디스플레이 효과를 실현할 수 있다면 도대체 누구를 선택해야 할까요?
  • 사실 CALayer, UIView에 비해 이벤트 처리 기능이 하나 더 있습니다.즉, CALayer는 사용자의 터치 이벤트를 처리할 수 없고 UIView는
  • 따라서 표시된 물건이 사용자와 상호작용을 해야 한다면 UIView를 사용한다.사용자와의 상호 작용이 필요하지 않은 경우 UIView 또는 CALayer를 사용할 수 있음
  • 물론 CALayer는 이벤트 처리 기능이 적고 경량

  • position 및 anchorPoint

  • CALayer에는 두 가지 중요한 속성이 있는데 그것이 바로position과anchorPoint
  • 이다.
    @property CGPoint position;
    // CALayer 
    // (0, 0)
    
    @property CGPoint anchorPoint;
    // “ ”、“ ”
    // CALayer position 
    // (0, 0)
    // x、y 0~1, (0.5, 0.5)
    

    암시적 애니메이션

  • 모든 UIView 내부에 기본적으로 하나의 CALayer가 연결되어 있습니다. 이 Layer를 Root Layer(루트)
  • 라고 할 수 있습니다.
  • Root Layer가 아닌 모든 비 Root Layer, 즉 수동으로 생성된 CALayer 객체에는 암시적 애니메이션이 있음
  • 무엇이 스텔스 애니메이션입니까?
  • Root Layer가 아닌 속성의 일부를 수정하면 기본적으로 애니메이션 효과가 자동으로 발생
  • 이러한 속성을 Animatable Properties(애니메이션 가능 속성)
  • 라고 합니다.
  • 다음과 같은 일반적인 Animatable Properties 목록을 제공합니다.
  • bounds: CALayer의 너비와 높이를 설정합니다.이 속성을 수정하면 배율 조정 애니메이션이 발생합니다
  • backgroundColor: CALayer의 배경색을 설정합니다.이 속성을 수정하면 배경색의 그래디언트 애니메이션이 발생합니다
  • position: CALayer의 위치를 설정합니다.이 속성을 수정하면 애니메이션이 변환됩니다
  • .
  • 애니메이션 사무(CATransaction)를 통해 기본 스텔스 애니메이션 효과를 닫을 수 있음
  • [CATransaction begin];
    [CATransaction setDisableActions:YES];
    self.myview.layer.position = CGPointMake(10, 10);
    [CATransaction commit];
    

    좋은 웹페이지 즐겨찾기