ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] Core Animation μ΄λž€? (1)
    iOS/πŸ€– App 2021. 7. 5. 11:51

    μ•ˆλ…•ν•˜μ„Έμš”πŸΆ

    이번 μ‹œκ°„μ—λŠ” Core Animation 에 λŒ€ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

     

    이 ν”„λ ˆμž„μ›Œν¬λŠ” CALayer λ₯Ό κ³΅λΆ€ν•˜λŠ” 도쀑 배경지식이 ν•„μš”ν•˜λ‹€κ³  μƒκ°ν•˜μ—¬ κ΄€λ ¨ λ¬Έμ„œλ₯Ό μ •λ¦¬ν•˜λ©΄μ„œ κ³΅λΆ€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

     

    그런데 λ¬Έμ„œ 양이 λ§Žμ•„μ„œ λ‹€ λ‹€λ£¨μ§€λŠ” μ•Šκ³ , κ°œμš”μ™€ Basic λΆ€λΆ„κΉŒμ§€ μ •λ¦¬ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

     

    λ’€μ˜ 뢀뢄은 더 이상 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κΈ°μˆ λ“€λ„ 있고, 핡심 κ°œλ…μ€ μ•„λ‹ˆμ—¬μ„œ λ‹€μŒμœΌλ‘œ 정리λ₯Ό λ―Έλ£°κ²Œμš” ^^

     

    그럼 μ‹œμž‘ν•΄λ³Όκ²Œμš”!!


     

    Core Animation 에 λŒ€ν•˜μ—¬

     

    μ›λž˜λŠ” Metal κ³Ό Core Graphics λ₯Ό 톡해 Graphics Harware 에 직접 μ ‘κ·Όν•˜μ—¬ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     

    μ—¬κΈ°μ„œ Metal 은 OpenGL 을 λŒ€μ²΄ν•˜μ—¬ μ• ν”Œμ΄ 직접 λ§Œλ“  κ·Έλž˜ν”½ μ œμ–΄ μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

     

     

     

    Core Animation 은 λ°”λ‘œ μœ„μͺ½ λ ˆμ΄μ–΄μ— μœ„μΉ˜ν•˜μ—¬ μ’€ 더 High-level API λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

     

    Core Animation 은 iOS 와 OS X μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” κ·Έλž˜ν”½ λ Œλ”λ§ κ³Ό μ• λ‹ˆλ©”μ΄μ…˜ 기반 κΈ°μˆ μž…λ‹ˆλ‹€.

     

    이것을 μ΄μš©ν•΄μ„œ μ•± λ‚΄μ˜ View 와 μ‹œκ°μ  μš”μ†Œλ“€μ„ animate ν•˜λŠ”λ° μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     

    Core Animation 을 μ‚¬μš©ν•œλ‹€λ©΄, μ• λ‹ˆλ©”μ΄μ…˜μ˜ 각각의 ν”„λ ˆμž„μ„ κ·Έλ¦¬λŠ”λ° ν•„μš”ν•œ λŒ€λΆ€λΆ„μ˜ μž‘μ—…μ„ μ•Œμ•„μ„œ ν•΄μ€λ‹ˆλ‹€.

     

    μš°λ¦¬κ°€ ν•΄μ•Όν•  것은 λͺ‡ μ•ˆλ˜λŠ” animation νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•˜κ³ , (예λ₯Ό λ“€μ–΄ μ‹œμž‘ 지점과 μ’…λ£Œ 지점)

    Core Animation μ—κ²Œ μ‹œμž‘ν•˜λΌκ³  μ•Œλ €μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€.

     

    λ‚˜λ¨Έμ§€λŠ” Core Animation 이 μ•Œμ•„μ„œ ν•΄μ€λ‹ˆλ‹€.

     

    λŒ€λΆ€λΆ„μ˜ μ‹€μ œ 그리기 μž‘μ—…μ„ λ Œλ”λ§ 가속을 μœ„ν•΄ λ©”μΈλ³΄λ“œμ— λΆ€μ°©λ˜μ–΄ μžˆλŠ” κ·Έλž˜ν”½ ν•˜λ“œμ›¨μ–΄μ— μ „λ‹¬ν•©λ‹ˆλ‹€.

     

    이 μžλ™ν™”λœ κ·Έλž˜ν”½ 가속은 CPU 에 무리λ₯Ό μ£Όκ±°λ‚˜ μ•±μ˜ 속도λ₯Ό μ €ν•˜μ‹œν‚€μ§€ μ•Šκ³ , 높은 ν”„λ ˆμž„ 속도와 λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.

     

    μœ„μ˜ κ·Έλž˜ν”„μ™€ 같이, Core Animation 은 UIKit λ°‘μ—μ„œ μœ„μΉ˜ν•˜λ©΄μ„œ Cocoa Touch 의 View 처리 κ³Όμ •κ³Ό κ°•λ ₯ν•˜κ²Œ κ²°ν•©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.


     

    ν•œ λˆˆμ— μ‚΄νŽ΄λ³΄λŠ” Core Animation

     

    1. Core Animation 은 μ•±μ˜ μ½˜ν…μΈ λ₯Ό κ΄€λ¦¬ν•œλ‹€

     

    Core Animation 은 그것 μžμ²΄κ°€ 무언가λ₯Ό κ·Έλ¦¬λŠ” μ‹œμŠ€ν…œμ΄ μ•„λ‹™λ‹ˆλ‹€.

    = κ·Έλ¦¬λŠ” 것은 ν•˜λ“œμ›¨μ–΄μž„.

     

    ν•˜λ“œμ›¨μ–΄κ°€ μ•±μ˜ μ½˜ν…μΈ λ₯Ό μ‘°ν•©ν•˜κ³  μˆ˜μ •ν• μˆ˜ 있게 ν•΄μ£ΌλŠ” 기반 κΈ°μˆ μž…λ‹ˆλ‹€.

     

    이 기반 기술(infrastructure) μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ μ˜€λΈŒμ νŠΈλŠ” 'λ ˆμ΄μ–΄' μž…λ‹ˆλ‹€.

     

     

    μš°λ¦¬λŠ” λ ˆμ΄μ–΄λ₯Ό μ‚¬μš©ν•΄μ„œ μ½˜ν…μΈ λ₯Ό μˆ˜μ •ν•˜κ³  κ΄€λ¦¬ν•©λ‹ˆλ‹€.

     

    λ ˆμ΄μ–΄λŠ” μ½˜ν…μΈ λ₯Ό λΉ„νŠΈλ§΅μœΌλ‘œ μΊ‘μ²˜ν•©λ‹ˆλ‹€.

    :: λΉ„νŠΈλ§΅μ— λŒ€ν•΄ μ •λ¦¬ν•œ λΈ”λ‘œκ·Έ κΈ€

     

    이 방식은 κ·Έλž˜ν”½ μž₯치λ₯Ό μ‚¬μš©ν•˜μ—¬ μ½˜ν…μΈ λ₯Ό μ‰½κ²Œ μ‘°μž‘ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.

     

    λŒ€λΆ€λΆ„μ˜ μ•±μ—μ„œ λ ˆμ΄μ–΄λŠ” 뷰의 μ½˜ν…μΈ λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

     

    λ¬Όλ‘  ν•„μš”μ— 따라 λ ˆμ΄μ–΄ 였브젝트λ₯Ό λ”°λ‘œ 직접 생성할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.


     

    2. λ ˆμ΄μ–΄λ₯Ό μˆ˜μ •ν•˜λ©΄ μ• λ‹ˆλ©”μ΄μ…˜μ„ μΌμœΌν‚¨λ‹€

    Core Animation 을 μ‚¬μš©ν•΄μ„œ μƒμ„±ν•œ λŒ€λΆ€λΆ„μ˜ μ• λ‹ˆλ©”μ΄μ…˜μ€ λ ˆμ΄μ–΄μ˜ 속성 λ³€κ²½κ³Ό 관련이 μžˆμŠ΅λ‹ˆλ‹€.

     

    뷰와 λ§ˆμ°¬κ°€μ§€λ‘œ λ ˆμ΄μ–΄ μ˜€λΈŒμ νŠΈλ„ bounds λ₯Ό 가진 μ‚¬κ°ν˜•, ν™”λ©΄ μƒμ—μ„œμ˜ μœ„μΉ˜κ°’, 투λͺ…도, transfrom 속성 뿐만 μ•„λ‹ˆλΌ λ‹€μ–‘ν•œ μ‹œκ°μ  효과과 κ΄€λ ¨λœ 속성을 가지고 μžˆμŠ΅λ‹ˆλ‹€. 그리고 이 속성듀은 μˆ˜μ •μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

     

    "Animatable" 이 뢙은 속성은 κ°’ λ³€κ²½μ‹œ Animation이 트리거 λ©λ‹ˆλ‹€.

     

    이런 속성듀 쀑 λŒ€λΆ€λΆ„μ€, κ·Έ 속성 값을 λ³€κ²½ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ μ•”μ‹œμ μœΌλ‘œ(implicitly) μ• λ‹ˆλ©”μ΄μ…˜μ„ μƒμ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

     

    이 μ• λ‹ˆλ©”μ΄μ…˜μ€ λ ˆμ΄μ–΄μ˜ 속성 값이 λ³€κ²½ μ „ κ°’μ—μ„œ λ³€κ²½ ν›„ κ°’μœΌλ‘œ λ³€κ²½λ˜λ©΄μ„œ λ™μž‘ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

     

    μ• λ‹ˆλ©”μ΄μ…˜ λ™μž‘μ„ 더 μ„Έλ°€ν•˜κ²Œ μ‘°μ •ν•˜κ³  μ‹Άλ‹€λ©΄ λͺ…μ‹œμ μœΌλ‘œ 이 속성듀을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


     

    3. λ ˆμ΄μ–΄λŠ” κ³„μΈ΅μ μœΌλ‘œ κ΄€λ¦¬λœλ‹€

    λ ˆμ΄μ–΄λ“€ μ‚¬μ΄μ—μ„œλŠ” λΆ€λͺ¨-μžμ‹ 관계가 ν˜•μ„±λ˜λ©° κ³„μΈ΅μ μœΌλ‘œ μ •λ ¬λ©λ‹ˆλ‹€.

     

    이 λ ˆμ΄μ–΄λ“€μ˜ 정렬은 λ ˆμ΄μ–΄μ˜ μ‹œκ°μ μΈ μ½˜ν…μΈ μ— 뷰와 같은 λ°©μ‹μœΌλ‘œ 영ν–₯을 μ€λ‹ˆλ‹€.

    = 예λ₯Ό λ“€μ–΄ μƒμœ„ κ³„μΈ΅μ˜ λ ˆμ΄μ–΄λŠ” ν•˜μœ„ 계측 λ ˆμ΄μ–΄λ³΄λ‹€ 밑에 ν‘œμ‹œλ˜λŠ” λ°©μ‹μœΌλ‘œ 뷰와 μœ μ‚¬ν•¨

     

    뷰에 λΆ™μ–΄μžˆλŠ” λ ˆμ΄μ–΄λ“€μ˜ κ³„μΈ΅κ΅¬μ‘°λŠ” κ·Έ λ·°λ“€μ˜ 계측ꡬ쑰와 λ™μΌν•©λ‹ˆλ‹€.

     

    이 λ ˆμ΄μ–΄ κ³„μΈ΅μ—λŠ” 뷰와 관계 없이 직접 λ ˆμ΄μ–΄λ₯Ό μΆ”κ°€ν•  수 도 μžˆμŠ΅λ‹ˆλ‹€.


     

     

     

    글이 λ„ˆλ¬΄ κΈΈμ–΄μ Έμ„œ 2λΆ€μž‘μœΌλ‘œ λ§Œλ“€κ² μŠ΅λ‹ˆλ‹Ή

    >> λ‹€μŒ κΈ€ : Core Animtion μ΄λž€? (2) <<

     

    끝!!


    πŸ€–πŸŸ’[우짱의 iOS λΈ”λ‘œκ·Έ]πŸ”΅πŸ’»

    iOSλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

     

     

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜