본문 바로가기
프로그래밍 놀이터/iOS

[ios/reference] Setting Up Layer Objects

by 돼지왕 왕돼지 2017. 11. 21.
반응형

 [ios/reference] Setting Up Layer Objects


https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/SettingUpLayerObjects/SettingUpLayerObjects.html#//apple_ref/doc/uid/TP40004514-CH13-SW12

assign, backed, bounds, caeagllayer, CAEmitterLayer, CAGradientLayer, calyer, cametallayer, CAOpenGLLayer, CAReplicatorLayer, CAScrollLayer, CAShapeLayer, CATextLayer, catiledlayer, CATransformLayer, cgimageref, content, content 직접 그리기, contents property, contentsGravity, contentsscale, core animation, corea animation, delegate, Draw, Enable, FIT, gradient, high resolution image, IMAGE, IOS, kCAGravity, kCAGravityResizeAspect, kCAGravityTopLeft, Layer, layer object, layer-backed view, layerclass method, Metal, OpenGL, OS X, OSX, Overriding, particle emitter system, Performance, position-based, QCCompositionLayer, retina, Scale, scaling-based, subclass, UIView, View, Zoom, [ios/reference] Setting Up Layer Objects, 레티나, 명시적 enable, 큰 이미지 표시


-

iOS 앱에서 Core Animation 은 항상 enable 되어 있고, 모든 view 는 layer 가 backed 되어 있다.

OS X 는 Core Animation 을 명시적으로 enable 시켜야 한다.



-

Layer-backed view 는 CALayer 를 기본으로 만든다.

그러나 상황에 따라 다른 Layer 를 설정할 수 있다.

다른 Layer 를 사용하는 이유는, performance 를 향상시키거나, 더 간단한 방법으로 작업을 할 수 있기 때문이다.


예를 들어 CATiledLayer 는 큰 이미지를 표시하는 데 효율적이다.



-

UIView 를 extends 하고, layerClass method 를 overriding 하여 layer class 를 바꿀 수 있다.



-

Layer Class 를 바꾸는 또 다른 예는...


Metal 을 이용하여 draw 하는 경우 CAMetalLayer 를...

OpenGL 을 사용하여 draw 하는 경우는 CAEAGLLayer 를 사용한다.


특정 상황에서 더 좋은 performance 를 내는 layer 도 있다.



-

Layer 클래스들은...


CAEmitterLayer

     Core Animation 기반 particle emitter system 에 사용하기 좋다.


CAGradientLayer

     gradient 를 그리기에 좋다.


CAMetalLayer


CAEAGLLayer/CAOpenGLLayer(OSX)


CAReplicatorLayer

     한개 이상의 sublayer 를 copy 하기 위해 사용된다.


CAScrollLayer

     sub layer 들을 크게 스크롤하는 경우에 사용


CAShapeLayer

     cubic Bezier spline 을 그릴 때 사용된다.


CATextLayer

     text 그릴 때 사용된다.


CATiledLayer

     큰 이미지를 작은 타일 형태로 만들어 그릴 때 사용된다.

     zoom 도 지원된다.


CATransformLayer

     3D layer hierarchy 를 rendering 하기 위해 사용된다.


QCCompositionLayer ( OS X )



-

Layer 에 content 를 설정하는 방법은 3가지가 있다.


     contents property 에 바로 image 를 assign 한다. ( 변경이 적은 contents 를 설정하는 최적의 방법 )

     layer 에 delegate 를 설정하고 delegate 가 content 를 그리도록 한다. ( 주기적으로 바뀌는 경우 최적 )

     layer 의 subclass 를 만들고 override 하여 content 를 직접 그린다.



-

Layer 에 전달하는 image 는 ( contents property 를 통해 ) CGImageRef type 이어야 한다.



-

Layer 에 image 를 전달한 경우 contentsGravity property 를 통해 해당 이미지가 bounds 안에서 어떻게 표시될지를 정해야 한다.

기본값은 bounds 에 맞도록 scale 하여 fit 시키는 것이다.


두 가지 측면에서 값을 지정한다.

하나는 position-based, 하나는 scaling-based


kCAGravity 값을 지정해준다. ( ex) kCAGravityTopLeft, kCAGravityResizeAspect )



-

High resolution image 를 다룰 때에는 contentsScale 값을 적당히 넣어주는 것이 좋다.

기본값은 1.0 이다.

레티나를 위한 display 라면 2.0 을 넣어준다.


아 값은 image 를 직접 지정해 준 경우에 valid 하다.




반응형

댓글