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];
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.