Implicit Animation

박성민·2021년 2월 10일
0

iOS

목록 보기
16/30
post-thumbnail

UIKit은 implicit animation을 비활성화 합니다. 좀더 구체적으로 설명하자면 UIView에 있는 CALayer는 implicit animate 되지 않습니다. 사용자가 직접 생성하고 UIView에 연관되지 않은 CALayer는 implicit animation을 사용합니다.

Implicit Animation 사용법

Layer 객체의 property들을 업데이트 하면 됩니다.

	myLayer.opacity = 0.0

Layer 객체의 property를 수정하면 바로 layer 객체에 반영되지만 시각적인 요소는 즉시 바뀌지 않습니다. 대신 Core Animation은 사용자의 변경을 트리거로 사용하여 하나 이상의 implicit animation을 만들고 실행을 예약합니다.

Animation Timing

Implicit & explicit animation은 일반적으로 현재 런루프 끝에 실행을 시작하며 애니메이션을 실행 시키기 위해서 현재 쓰레드가 런루프를 가지고 있어야합니다. 여러 property를 변경하거나 layer에 여러 애니메이션을 추가하는 경우 모든 property 변경사항이 동시에 애니메이션 됩니다(여러 개가 중첩이 가능하므로 많이 중첩되면 UIView animate보다 느릴 수 있다).

Example

3초 뒤에 위치와 크기, opacity를 바꿔주었습니다. 애니메이션을 추가하지 않아도 자동으로 애니메이션하는 것을 확인 할 수 있습니다.

    layer.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
    view.layer.addSublayer(layer)
    layer.backgroundColor = UIColor.red.cgColor
        
    DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
        self.layer.opacity = 0.5
        self.layer.frame = CGRect(x: 300, y: 300, width: 200, height: 200)
    }

출처 및 참고

profile
iOS시작~

0개의 댓글