TIL(Today I Learned)

4월 1일(목)

학습내용

  • Core Animation
    • View는 최소 1개의 Layer를 갖고 있다.
    • Core Animation은 Layer를 이용하여 애니메이션을 나타낸다.
    • 애니메이션은 두가지 Layer가 있는데, Model Layer은 실제 위치, Presentation Layer 애니메이션이 되는 궤적을 나타낸다.
    • layer의 position 프로퍼티를 특정 좌표로 설정함으로써 Model Layer(실제 위치)를 변경할 수 있다.
    • animation의 keyPath는 애니메이션이 작동하는 동안에 바꾸고 싶은 속성을 문자열로 초기화하고, fromValue는 속성의 시작값, toValue는 속성의 마지막값, duration은 애니메이션 진행 시간을 저장하는 프로퍼티이다.
    • animation.fillMode, isRemovedOnCompletion을 이용하여 애니메이션이 작동할때 발생하는 반복처리들을 줄여서 성능을 향상시키려 할때 사용하는 프로퍼티이다.
    • animation.isAdditive는 절대적인 값을 변경하는게 아닌, 상대적으로 값을 더하고 싶을때 사용하는 프로퍼티이다.
    • CABasicAnimation, CAKeyframeAnimation 등의 애니메이션 클래스가 있다.
    • 애니메이션이 작동하면서 Layer의 위치가 변한 것 처럼 보여도 실제 뷰의 위치는 변하지 않는다.
    • UIImageView는 GIF를 지원하지 않는다.

문제점/고민한점

  • UIView Animation(UIViewPropertyAnimator)과 Core Animation의 차이는?

해결방법

  • UIView Animation(UIViewPropertyAnimator)는 View의 Property 값에 대한 애니메이션이고, Core Animation은 Layer의 Property 값에 대한 애니메이션이다.

참고

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html

https://www.objc.io/issues/12-animations/animations-explained/

https://stackoverflow.com/questions/42802984/when-to-use-uiview-animation-cabasicanimation-and-uiviewpropertyanimator