CALayer
- Core Animation์ iOS / OS X์์ ์ฌ์ฉ ํ ์ ์๋ ๊ทธ๋ํฝ ๋ ๋๋ง ๋ฐ ์ ๋๋ฉ์ด์ ์ธํ๋ผ
- Core Animation์ด ์ง์ ์ ๋๋ฉ์ด์ ์ ์กฐ์ํ๋๊ฒ ์๋๋ผ ์ค์ ๋๋ก์ ์์ ์ ํ๋์จ์ด๋ก ์ ๋ฌ
- Core Animation ์ธํ๋ผ์ ํต์ฌ์๋ Layer๊ฐ์ฒด(CALayer)๊ฐ ์์
- Layer๋ ์์ฒด ๋ชจ์(own appearance)์ ์ ์ํ์ง ์๊ณ . ๋นํธ๋งต์ ๋๋ฌ์ผ ์ํ์ ๋ณด๋ง ๊ด๋ฆฌ
- ๊ทธ๋ํฝ ํ๋์จ์ด๊ฐ ์ฝ๊ฒ ์กฐ์ ํ ์ ์๋๋ก ๋นํธ๋งต์ผ๋ก ์ปจํ ์ธ ๋ฅผ ์บก์ณ (backing store)
- Layer์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝ -> Layer๊ฐ์ฒด์ ๊ด๋ จ๋ ์ํ ์ ๋ณด(state information)๊ฐ ๋ณ๊ฒฝ๋๊ณ -> ๋ณ๊ฒฝ์ฌํญ์ด ์ ๋๋ฉ์ด์ ์ ํธ๋ฆฌ๊ฑฐํ๋ฉด, Core Animation์ Layer์ ๋นํธ๋งต ๋ฐ ์ํ์ ๋ณด๋ฅผ ๊ทธ๋ํฝ ํ๋์จ์ด๋ก ์ ๋ฌ -> ํ๋์จ์ด๊ฐ ์ ๋๋ฉ์ด์ ์ ์ํ
UIView
- ์ค์ ๋ก UIView๋ ๋ ์ด์์๊ณผ ํฐ์น ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฑ ๋ง์ ์์ ์ ํ์ง๋ง UIView๋ CALayer๋ฅผ ๊ฐ์ธ๊ณ ์๋ ๊ฒ์ ๋ถ๊ณผ
- UIView ๊ฐ ์์ฑ๋ ๋, layer ์ค๋ธ์ ํธ๋ ํ๋ ์์ฑ๋์ด UIView ์ main root layer ๊ฐ ๋๋ค
- UIResponder๋ฅผ ์์ ๋ฐ๊ณ ์์ด์ ํญ, ํฐ์น ๋ฑ์ ์ ์ ์ธํฐ๋ ์ ์ ์ง์ ์ฒ๋ฆฌ
- ํ์ง๋ง ๋ทฐ ์์ ์ปจํ ์ธ ๋ ์ ๋๋ฉ์ด์ ์ ๊ทธ๋ฆฌ๋ ํ์๋ ์ง์ ๋ค๋ฃจ์ง ์๋๋ค -> UIKit๊ฐ CoreAnimation์๊ฒ ์์ -> UIView์ bounds๊ฐ ๋ณ๊ฒฝ๋๋ฉด UIView๋ ์์ ์ ๋ฃจํธ layer์ bounds๋ฅผ ๋ณ๊ฒฝํ๋ค. ์ด๋ ๊ฒ ๋ฃจํธ ๋ ์ด์ด์ ๋ ์ด์์์ ์ํด์๋ ๋ทฐ์ ๋ง์ถ์ด ์๋์ผ๋ก ๋ณ๊ฒฝ
- UIView๋ CALayerDelegate๋ฅผ ์ฑํ -> ์ฑํํ Delegate์ display๋ draw ๋ฉ์๋๊ฐ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ์์ ์ ํธ์ถ(update cycle)๋์ด ๋ณด์ฌ์ค ์ปจํ ์ธ ๋ฅผ layer์ ์ ๊ณต -> ๋ ์ด์ด๋ ์ด ์ปจํ ์ธ ๋ฅผ ๋นํธ๋งต์ผ๋ก ์บ์ฑํด์ ๊ฐ์ง๊ณ ์๋๋ค -> ์ ๋๋ฉ์ด์ ์ ์์ํ๋ฉด GPU๋ฅผ ํตํด ์บ์ฑ๋ ๋นํธ๋งต์ ์ฌ์ฉํด ์๋ก์ด ๋นํธ๋งต์๋ง๋ ๋ค
์ฐธ๊ณ ์๋ฃ
https://sihyungyou.github.io/iOS-CoreAnimation/
https://zeddios.tistory.com/747
https://woozzang.tistory.com/140?category=909641
https://jeonyeohun.tistory.com/363?category=881841
'iOS ๐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Xcode 13, No StoryBoard Settings without SceneDelegate (0) | 2022.03.22 |
---|---|
Animation 2 - Core Animation (0) | 2022.03.21 |
Animation 1 - UIView Animation (0) | 2022.03.17 |
Core Graphics๋ก ๋ ์ด๋ฏธ์ง ํฉ์ฑํ๊ธฐ (0) | 2022.03.17 |
Pixel, PT, PPI (0) | 2022.03.16 |