ABOUT ME

-

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

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

    이전 글에 μ΄μ–΄μ„œ Core Animation Basic λ¬Έμ„œλ₯Ό 정리해 λ³΄μ•˜μŠ΅λ‹ˆλ‹€!

     

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


    Core Animation 은 뷰와 λ‹€λ₯Έ μ‹œκ°μ  μš”μ†Œλ“€μ„ μ›€μ§μ΄λŠ”데 ν•„μš”ν•œ λ²”μš© λͺ©μ μ˜ μ‹œμŠ€ν…œμ„ μ œκ³΅ν•©λ‹ˆλ‹€.

     

    Core Animation 은 λ·°λ₯Ό λŒ€μ²΄ν•˜λ €λŠ” λͺ©μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것이 μ•„λ‹™λ‹ˆλ‹€.

    였히렀 λ·°λ“€κ³Ό κ²°ν•©λ˜μ–΄μžˆλŠ” κΈ°μˆ μž…λ‹ˆλ‹€.

     

    그리고 이 기술의 λͺ©μ μ€ μ½˜ν…μΈ λ₯Ό μ›€μ§μ΄λŠ”λ° μžˆμ–΄μ„œ 더 λ‚˜μ€ μ„±λŠ₯κ³Ό 지원을 μ œκ³΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

     

    Core Animation 을 톡해 뷰의 μ½˜ν…μΈ λ₯Ό λΉ„νŠΈλ§΅ ν˜•νƒœλ‘œ μΊμ‹±ν•¨μœΌλ‘œμ„œ, κ·Έλž˜ν”½ μž₯μΉ˜μ— μ˜ν•΄ λ°”λ‘œ μˆ˜μ •λ  수 μžˆλ„λ‘ ν•˜μ—¬ μœ„μ™€ 같은 λͺ©μ μ„ λ‹¬μ„±ν•©λ‹ˆλ‹€.( λΉ„νŠΈλ§΅ ν˜•νƒœλ‘œ μΊμ‹±ν•œλ‹€λŠ” ν‘œν˜„μ΄ 자주 λ“±μž₯함... κ·Έ μ£Όμ²΄λŠ” λ ˆμ΄μ–΄μž„)

     

    λͺ‡κ°€μ§€ κ²½μš°μ—μ„œ, Core Animation 의 캐싱 λ™μž‘ λ•Œλ¬Έμ— μ½˜ν…μΈ λ₯Ό μ–΄λ–»κ²Œ ν‘œν˜„ν•˜κ³  관리해야할지 κ³ λ €ν•΄μ•Όν•˜λŠ” 상황이 μƒκΉλ‹ˆλ‹€.

     

    κ·ΈλŸ¬λ‚˜ λŒ€λΆ€λΆ„μ˜ κ²½μš°μ—λŠ” 이 ν”„λ ˆμž„μ›Œν¬κ°€ μ‘΄μž¬ν•˜λŠ”μ§€μ‘°μ°¨λ„ λͺ¨λ₯΄κ³  μ‚¬μš©ν•˜κ²Œ 될 κ²ƒμž…λ‹ˆλ‹€.

     

    이런 μΊμ‹±λ™μž‘ 이외에도, Core Animation 을 톡해 직접 μ½˜ν…μΈ λ₯Ό 생성할 수 있으며, μƒμ„±ν•œ μ½˜ν…μΈ λ₯Ό 뷰와 ν†΅ν•©ν•˜μ—¬ 같이 μ›€μ§μ΄κ²Œ λ§Œλ“€μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€


     

    λ ˆμ΄μ–΄κ°€ 그리기와 μ• λ‹ˆλ©”μ΄μ…˜μ˜ κΈ°λ³Έμš”μ†Œλ₯Ό μ œκ³΅ν•œλ‹€

    λ ˆμ΄μ–΄ μ˜€λΈŒμ νŠΈλŠ” 3차원 κ³΅κ°„μ—μ„œ λ‹€λ£¨μ–΄μ§€λŠ” 2차원 ν‰λ©΄μž…λ‹ˆλ‹€.

     

    그리고 Core Animation 으둜 λ‹€λ£¨λŠ” μž‘μ—…λ“€μ˜ 핡심 κ°μ²΄μž…λ‹ˆλ‹€.

     

    뷰와 λΉ„μŠ·ν•˜κ²Œ λ ˆμ΄μ–΄λŠ” ν‰λ©΄μ˜ μ’Œν‘œ, μ½˜ν…μΈ , μ‹œκ°μ  μš”μ†Œλ“€μ— λŒ€ν•œ 정보λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.

     

     

    뷰와 λ‹€λ₯Έ 점은, λ ˆμ΄μ–΄λŠ” κ·Έλ“€μ˜ μ™Έν˜•μ„ μ •μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

     

    λ ˆμ΄μ–΄λŠ” λΉ„νŠΈλ§΅μ— λŒ€ν•œ μƒνƒœ 정보λ₯Ό κ΄€λ¦¬ν•œλ‹€κ³  λ³΄λŠ”νŽΈμ΄ λ§žμŠ΅λ‹ˆλ‹€.

     

    λΉ„νŠΈλ§΅ μŠ€μŠ€λ‘œλŠ” λ·°κ°€ κ·Έλ €λ‚Έ κ²°κ³Όλ¬Όμ΄κ±°λ‚˜, 직접 μ •μ˜ν•œ κ³ μ •λœ 이미지가 될 수 μžˆμŠ΅λ‹ˆλ‹€.

     

    μ΄λŸ¬ν•œ 이유 λ•Œλ¬Έμ— μ•±μ—μ„œ μ‚¬μš©ν•˜λŠ” 메인 λ ˆμ΄μ–΄λŠ” λͺ¨λΈ 였브젝트둜 κ°„μ£Όλ©λ‹ˆλ‹€.

     

    μ™œλƒλ©΄ λ ˆμ΄μ–΄μ˜ μ£Όμš” μ±…μž„μ΄ 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” 것이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.


     

    λ ˆμ΄μ–΄ 기반 λ“œλ‘œμž‰ λͺ¨λΈ

    λŒ€λΆ€λΆ„μ˜ λ ˆμ΄μ–΄λŠ” μ‹€μ œλ‘œ 그리기 λ™μž‘μ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

     

    λŒ€μ‹ μ—, λ ˆμ΄μ–΄λŠ” 앱이 μ œκ³΅ν•œ? μ‚°μΆœν•΄λ‚Έ? μ½˜ν…μΈ λ₯Ό μΊ‘μ²˜ν•˜μ—¬ λΉ„νŠΈλ§΅ ν˜•νƒœλ‘œ μΊμ‹±ν•©λ‹ˆλ‹€.

     

    이 μΊμ‹±λœ 결과물을 'backing store' 라고 λΆ€λ₯΄κΈ°λ„ ν•©λ‹ˆλ‹€.

     

    λ ˆμ΄μ–΄μ˜ 속성을 λ³€κ²½ν•œλ‹€λŠ” μ˜λ―ΈλŠ” λ ˆμ΄μ–΄ μ˜€λΈŒμ νŠΈμ™€ μ—°κ΄€λœ μƒνƒœ 정보λ₯Ό λ³€κ²½ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

     

    이 변경이 μ• λ‹ˆλ©”μ΄μ…˜μ„ μΌμœΌν‚€λ©΄, Core Animation 은 λ ˆμ΄μ–΄κ°€ μ €μž₯ν•΄ 놓은 λΉ„νŠΈλ§΅κ³Ό μƒνƒœ 정보λ₯Ό κ·Έλž˜ν”½ μž₯μΉ˜μ— μ „λ‹¬ν•©λ‹ˆλ‹€.

     

    κ·Έλž˜ν”½ μž₯μΉ˜λŠ” λ³€κ²½λœ μƒˆλ‘œμš΄ 정보λ₯Ό 가지고 λΉ„νŠΈλ§΅μ„ μƒˆλ‘­κ²Œ κ·Έλ¦¬λŠ” μž‘μ—…μ„ ν•©λ‹ˆλ‹€.

     

     

    이 μž‘μ—…μ΄ 정적인 λΉ„νŠΈλ§΅μ„ μ‘°μž‘ν•œλ‹€λŠ” 점이, λ ˆμ΄μ–΄ 기반 그리기가 기쑴의 λ·° 기반 그리기 μž‘μ—…κ³Ό λΆ„λͺ…ν•˜κ²Œ κ΅¬λ³„λ˜λŠ” μ μž…λ‹ˆλ‹€.

     

    뷰기반 κ·Έλ¦¬κΈ°μ—μ„œλŠ”, λ·° 변경을 μ‹œλ„ν•  λ•Œ λŒ€λΆ€λΆ„ drawRect: λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

    이 λ©”μ„œλ“œλŠ” μƒˆλ‘œμš΄ νŒŒλΌλ―Έν„°λ₯Ό 가지고 μ½˜ν…μΈ λ₯Ό λ‹€μ‹œ κ·Έλ €λƒ…λ‹ˆλ‹€.

     

    그런데 이런 방법은 λΉ„μš©μ΄ 많이 λ“­λ‹ˆλ‹€. λ©”μΈμ“°λ ˆλ“œμ—μ„œ CPUλ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

     

    Core Animation λ₯Ό μ‚¬μš©ν•˜λ©΄ 이런 뢀담을 ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     

    Core Animation 은 뷰기반 그리기와 μœ μ‚¬ν•˜κ±°λ‚˜ λ™μΌν•œ 효과λ₯Ό λ‚΄κΈ° μœ„ν•΄μ„œ μΊμ‹±λœ λΉ„νŠΈλ§΅μ„ ν•˜λ“œμ›¨μ–΄μ— μ „λ‹¬ν•΄μ„œ μž‘μ—…ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

     

    Core Animation 이 μΊμ‹±λœ μ½˜ν…μΈ λ₯Ό 자주 μ‚¬μš©ν•˜κΈ°λŠ” ν•˜μ§€λ§Œ, 앱은 λ°˜λ“œμ‹œ 초기 μ½˜ν…μΈ λ₯Ό μ œκ³΅ν•˜κ³  그것을 주기적으둜 μ—…λ°μ΄νŠΈ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

     

    λ ˆμ΄μ–΄ μ˜€λΈŒμ νŠΈμ—κ²Œ μ½˜ν…μΈ λ₯Ό μ œκ³΅ν•˜λŠ” λ‹€μ–‘ν•œ 방법이 μžˆμŠ΅λ‹ˆλ‹€. μ΄ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

    이런 μ‹μœΌλ‘œ μ ‘κ·Όν•˜μ—¬ μ „λ‹¬ν•œλ‹€

    ν•˜λ“œμ›¨μ–΄λ₯Ό 톡해 λΉ„νŠΈλ§΅μ„ μ‘°μž‘ν•˜λŠ” 것은 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 톡해 μ‘°μž‘ν•˜λŠ” 것보닀 훨씬 더 λΉ λ₯΄κ²Œ μ• λ‹ˆλ©”μ΄μ…˜μ„ μƒμ„±ν•΄λ‚Όμˆ˜ μžˆμŠ΅λ‹ˆλ‹€.


     

    λ ˆμ΄μ–΄ 기반 μ• λ‹ˆλ©”μ΄μ…˜

    λ ˆμ΄μ–΄ μ˜€λΈŒμ νŠΈκ°€ 가지고 μžˆλŠ” 데이터와 μƒνƒœ μ •λ³΄λŠ”

    화면에 ν‘œμ‹œλ˜λŠ” λ ˆμ΄μ–΄μ˜ μ½˜ν…μΈ μ˜ μ‹œκ°μ μΈ ν‘œν˜„κ³ΌλŠ” λΆ„λ¦¬λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

     

    이 뢄리λ₯Ό 톡해 Core Animationκ°€ 였래된 μƒνƒœ κ°’μ—μ„œ μƒˆλ‘œμš΄ μƒνƒœκ°’μœΌλ‘œμ˜ 변경을 μ• λ‹ˆλ©”μ΄μ…˜ν™” ν•  수 있게 λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

     

    예λ₯Ό λ“€μ–΄, λ ˆμ΄μ–΄μ˜ μœ„μΉ˜ 속성을 λ³€κ²½ν•˜λ©΄ Core Animation이 λ ˆμ΄μ–΄λ₯Ό κΈ°μ‘΄ μœ„μΉ˜μ—μ„œ μƒˆλ‘œ μ •μ˜λœ μœ„μΉ˜ κ°’μœΌλ‘œ μ΄λ™μ‹œν‚΅λ‹ˆλ‹€.

     

    이와 같이 λ‹€λ₯Έ 속성듀을 λ³€κ²½ν•˜λ©΄ μ μ ˆν•œ μ• λ‹ˆλ©”μ΄μ…˜μ„ μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

     

    μ•„λž˜ 그림은 λ ˆμ΄μ–΄μ—μ„œ μž‘μ—…ν•  수 μžˆλŠ” λͺ‡κ°€μ§€ νƒ€μž…μ˜ μ• λ‹ˆλ©”μ΄μ…˜μ„ 보여주고 μžˆμŠ΅λ‹ˆλ‹€.

     

    이외에도 μ—¬λŸ¬ 속성듀이 κ°€λŠ₯ν•œλ°μš”, μ΄ λ¬Έμ„œ λ₯Ό ν™•μΈν•˜λ©΄ Animatable ν•œ 속성 리슀트λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

     

     

    μ• λ‹ˆλ©”μ΄μ…˜ κ³Όμ • 쀑에, Core Animation 은 ν”„λ ˆμž„κ³Ό ν”„λ ˆμž„κ°„μ˜ 그리기λ₯Ό ν•˜λ“œμ›¨μ–΄μ—μ„œ μž‘μ—…ν•©λ‹ˆλ‹€.

     

    μš°λ¦¬κ°€ ν•  것은 μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ‹œμž‘μ κ³Ό μ’…λ£Œμ§€μ μ„ μ •ν•˜λŠ” 것 뿐이고, λ‚˜λ¨Έμ§€λŠ” Core Animation 이 μ•Œμ•„μ„œ ν•΄μ€λ‹ˆλ‹€.

     

    ν•„μš”μ— μ˜ν•΄ μ‹œκ°„ 정보와 λ‹€μ–‘ν•œ νŒŒλΌλ―Έν„°λ₯Ό 톡해 μ»€μŠ€ν…€λ„ κ°€λŠ₯ν•©λ‹ˆλ‹€. μ΄ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”!


     

    Layer Objects Define Their Own Geometry

    λ ˆμ΄μ–΄λ„ 뷰처럼 frame κ³Ό bounds 둜 μœ„μΉ˜μ™€ 크기가 ν‘œν˜„λ©λ‹ˆλ‹€

     

     

     

    그리고 anchorPoint 에 따라 Rotation 의 결과값이 λ‹¬λΌμ§‘λ‹ˆλ‹€.

     


     

    λ ˆμ΄μ–΄ 트리

    Core Animation μ—μ„œλŠ” μ„Έ μ’…λ₯˜μ˜ λ ˆμ΄μ–΄ 였브젝트 집합이 μžˆμŒμ„ μΈμ§€ν•˜κ³  κ°‘μ‹œλ‹€~~~~~~~~~

     

    그리고 이 집합은 νŠΈλ¦¬ν˜•νƒœλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

     

    각각의 집합은 화면에 μ½˜ν…μΈ λ₯Ό λ„μš°λŠ”λ° μžˆμ–΄μ„œ μ„œλ‘œ λ‹€λ₯Έ 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

     

    1. Model Layer Tree (ν˜Ήμ€ Layer Tree) : μš°λ¦¬κ°€ κ°€μž₯ 많이 μƒν˜Έμž‘μš©ν•˜λŠ” μ§‘ν•©μž…λ‹ˆλ‹€. μ• λ‹ˆλ©”μ΄μ…˜μ„ μœ„ν•œ 속성 값듀을 μ €μž₯ν•˜λŠ” λͺ¨λΈ μ˜€λΈŒμ νŠΈμž…λ‹ˆλ‹€. μš°λ¦¬κ°€ λ ˆμ΄μ–΄μ˜ 속성을 μˆ˜μ •ν•˜λ©΄, 이 μ§‘ν•©μ˜ 였브젝트λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

     

    2. Presentation Tree: 이 νŠΈλ¦¬λŠ” ν˜„μž¬ 진행쀑인 μ• λ‹ˆλ©”μ΄μ…˜μ˜ 값듀을 가지고 μžˆμŠ΅λ‹ˆλ‹€. Model Layer Tree λŠ” μ΅œμ’… 값을 가지고 μžˆλ‹€λ©΄, Presentation Tree λŠ” ν˜„μž¬ 화면에 λ‚˜νƒ€λ‚˜κ³  μžˆλŠ” ν˜„μž¬ 값을 λ°˜μ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ£Όμ˜ν•  점은, 이 트리의 였브젝트의 속성값듀을 μ ˆλŒ€ λ³€κ²½ν•˜λ©΄ μ•ˆλœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•„μš”ν•  경우 읽기만 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    ❗️❗️ Presentaion Tree λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ΄ λ™μž‘μ€‘μΌ λ•Œλ§Œ μ ‘κ·Όν•΄μ•Όν•˜λŠ” μ˜€λΈŒμ νŠΈλ“€μž…λ‹ˆλ‹€.

     

    3. Render Tree: 이 νŠΈλ¦¬λŠ” μ‹€μ œ μ• λ‹ˆλ©”μ΄μ…˜ λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” 트리이고, Framework λ‹¨μ—μ„œ λ™μž‘ν•˜μ—¬ private 으둜 μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€!

     


     

    뷰와 λ ˆμ΄μ–΄μ˜ 상관관계

    λ ˆμ΄μ–΄λŠ” 뷰의 λŒ€μ²΄μž¬κ°€ μ•„λ‹™λ‹ˆλ‹€.

     

    즉,λ ˆμ΄μ–΄ λ‹¨λ…μœΌλ‘œ μ‹œκ°μ  μΈν„°νŽ˜μ΄μŠ€λ₯Ό 생성할 수 λŠ” μ—†μŠ΅λ‹ˆλ‹€.

     

    λ ˆμ΄μ–΄λŠ” 뷰의 κΈ°λ°˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

    ꡬ체적으둜 λ§ν•˜μžλ©΄, λ ˆμ΄μ–΄λŠ” 뷰의 μ½˜ν…μΈ  그리기와 μ• λ‹ˆλ©”μ΄μ…˜μ„ 높은 ν”„λ ˆμž„μœΌλ‘œ μœ μ§€ν•˜λ©΄μ„œ 쉽고 효율적으둜 κ°€λŠ₯ν•˜κ²Œ ν•΄μ€λ‹ˆλ‹€.

     

    κ·ΈλŸ¬λ‚˜, λ ˆμ΄μ–΄κ°€ ν•˜μ§€ μ•ŠλŠ” μž‘μ—…λ“€λ„ μžˆμŠ΅λ‹ˆλ‹€.

     

    λ ˆμ΄μ–΄λŠ” 이런 것듀을 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

    • 이벀트λ₯Ό ν•Έλ“€λ§ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • μ½˜ν…μΈ λ₯Ό 그리지 μ•ŠμŠ΅λ‹ˆλ‹€.
    • Responder chain 에 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • κ·Έ μ™Έ ν•˜μ§€ μ•ŠλŠ” μž‘μ—…λ“€μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.

     

    이런 이유 λ•Œλ¬Έμ—, λͺ¨λ“  앱은 μœ„μ™€ 같은 μž‘μ—…λ“€μ„ μœ„ν•΄μ„œ μ—¬μ „νžˆ λ·°κ°€ μ—¬μ „νžˆ ν•œ 개 이상 ν•„μš”ν•©λ‹ˆλ‹€.

     

    iOS μ—μ„œλŠ” λͺ¨λ“  λ·°κ°€ 각각의 λ ˆμ΄μ–΄ μ˜€λΈŒμ νŠΈμ—κ²Œ 지원을 λ°›μŠ΅λ‹ˆλ‹€. (layer-backed)

     

    CALayer λ¬Έμ„œμ—μ„œ μ–ΈκΈ‰λ˜λŠ”λ°, λ·°λ₯Ό μƒμ„±ν•˜λ©΄ ν•œ 개의 root layer κ°€ μƒμ„±λ˜μ–΄ 뷰와 μ—°κ²°λ©λ‹ˆλ‹€.

    ❗️❗️ layer-backed λ·°μ—μ„œ, (iOS λŠ” λͺ¨λ“  λ·°κ°€ layer-backed λ·°) κ°€λŠ₯ν•˜λ‹€λ©΄ κ·Έκ²ƒμ˜ λ ˆμ΄μ–΄ λŒ€μ‹  λ·°λ₯Ό μˆ˜μ •ν•˜λŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€.

     

    iOS μ—μ„œ λ·°λŠ” λ ˆμ΄μ–΄ 였브젝트λ₯Ό 감싸고 μžˆλŠ” κ°€λ²Όμš΄ λž˜νΌμž…λ‹ˆλ‹€.

    κ·Έλž˜μ„œ λ·° λŒ€μ‹  λ ˆμ΄μ–΄λ₯Ό μˆ˜μ •ν•΄λ„ λŒ€μ²΄λ‘œ 잘 λ™μž‘ν•©λ‹ˆλ‹€.

     

    ν•˜μ§€λ§Œ μ–΄λ–€ κ²½μš°μ—λŠ” λ°”λžŒμ§ ν•˜λŠ” κ²°κ³Όκ°€ λ‚˜μ˜¬ 수 도 μžˆμŠ΅λ‹ˆλ‹€.

     

    이런 함정에 ν•΄λ‹Ήν•˜λŠ” μ–΄λ–€ κ²½μš°κ°€ λ¬΄μ—‡μΈμ§€λŠ” λ¬Έμ„œ 전체에 걸쳐 μ„€λͺ…ν•˜κ² λ‹€κ³  λ‚˜μ™€μžˆμœΌλ‚˜, μ§€κΈˆμœΌλ‘œμ„  λ‹€ μ½μ–΄λ³΄μ§€λŠ” μ•Šμ„ 것이기 λ•Œλ¬Έμ— μ–΄λ–€ κ²½μš°κ°€ μžˆλ‹€!! μ •λ„λ‘œλ§Œ μ•Œκ³  λ„˜μ–΄κ°€κ³˜μŠ΅λ‹ˆλ‹€.

     

    λ¬Όλ‘  뷰와 직접 μ—°κ²°λœ λ ˆμ΄μ–΄λ§κ³ λ„, 뷰와 μ—°κ΄€λ˜μ–΄μžˆμ§€ μ•Šμ€ λ ˆμ΄μ–΄ 였브젝트λ₯Ό 직접 생성할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

     

     

     

    이 μ •λ„μ—μ„œ λ¬Έμ„œλŠ” 마무리 λ©λ‹ˆλ‹€. 아직 Layer λ₯Ό 직접 κ±΄λ“œλ €λ³Έμ μ΄ μ—†κΈ° λ•Œλ¬Έμ—, 핡심 κ°œλ…μ •λ„λ§Œ μ•Œκ³  갈수 μžˆλŠ” μ •λ„λ‘œ μ •λ¦¬ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

     

     

     

    끝!


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

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

     

    λŒ“κΈ€

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