[iOS/UI] CALayer๋? (feat. ์ ๋๋ฉ์ด์ ์๋ฆฌ)
์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค!
์ ๋ฒ ์๊ฐ์ Core Animation์ ๋ํ ๊ธ์ ์์ฑํ๋๋ฐ์.
Core Animation์ ๊ณต๋ถํ๋ค ๋ณด๋ Layer๊ฐ ๊ฑฐ์ ์ ๋ถ๋ผ๊ณ ํด๋ ๋๊ฒ ๋๋ผ๊ตฌ์..
๊ทธ๋์ ๋ฐ๋ก Layer์ ๋ํด ์ ๋ฆฌํ๋ ๊ธ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
(ํน์ Core Animation์ ๋ํด ์ ๋ชจ๋ฅด์๋ ๋ถ๋ค์ผ ์ฌ๊ธฐ ์์ ํ์ธํด์ฃผ์ธ์!)
๋ฐ๋ก ์์ํ ๊ฒ์~
CALayer๋?
Layer์ ์ฌ์ ์ ์๋ฏธ๋ ๊ฒน,๋ง,์ธต,๋จ๊ณ๋ฅผ ๋ปํฉ๋๋ค.
์ฌ์ ์ ์๋ฏธ์ ๊ฐ์ด iOS์์๋ ์๋์ ๊ฐ์ด ๊ณ์ธต์ผ๋ก ์ฌ์ฉ๋๋ ๋๋๋ฐ์.
์ ํํ๊ฒ๋ ์ด๋ฏธ์ง ๊ธฐ๋ฐ ์ปจํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๊ณ ํด๋น ์ปจํ ์ธ ์์ ์ ๋๋ฉ์ด์ ์ ์ํํ ์ ์๋๋ก ํ๋ ๊ฐ์ฒด์ ๋๋ค.
์ฆ, ๋ฐฐ๊ฒฝ์,ํ ๋๋ฆฌ ๋ฐ ๊ทธ๋ฆผ์์ ๊ฐ์ด ์ค์ ํ ์ ์๋ ํ๋ฉด์ ํ์ํ ์ ์๋ ์๊ฐ์ ์์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด์ฃ .
๊ณ ๋ก ์ฐ๋ฆฌ๊ฐ ์ฝ๊ฒ ์๊ฐ์ ์์๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ UIView๋ Layer๋ฅผ ๋ฐ๋์ ๊ฐ์ง๊ณ ์์ฃ .
Layer์ ์๋ฆฌ
์์์ Layer๋ ์ ๋๋ฉ์ด์ ์ ์ํํ ์ ์๋๋ก ํ๋ค๊ณ ์ธ๊ธํ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด Layer๋ ์ด๋ค ์์ผ๋ก ์ ๋๋ฉ์ด์ ์ ์ํํ๋ ๊ฒ์ผ๊น์?
Geometry
๋จผ์ ์์น๋ฅผ ๊ด๋ฆฌํ๋ Layer์ Geometry์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
(Geometry๋ ๊ณต๊ฐ์ ์๋ ๋ํ์ ๋ชจ์,์๋์ ์์น ๋ฑ์ ์๋ฏธํฉ๋๋ค.)
Layer๋ ๋ ๊ฐ์ง์ ์ขํ๊ณ๋ฅผ ์ฌ์ฉํ๋๋ฐ์.
1. Bounds์ Position
๋จผ์ ํฌ์ธํธ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ Layer์ ์๋์ ์ผ๋ก ์ง์ ๋์ด์ผ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
bounds๋ Layer ์์ฒด๊ฐ ์ด๋ ์ขํ์ ์ด๋ ํฌ๊ธฐ๋ก ์๋์ง ์ ์ํ๊ณ , position์ ์ ์ฒด ํ๋ฉด์ ๊ธฐ์ค์ผ๋ก ๋ ์ด์ด์ ์์น๋ฅผ ์ ์ํฉ๋๋ค.
์์์์ ๊ฐ์ด position์ Layer์ ์ค์์ ์๋ฏธํฉ๋๋ค.
๊ณ ๋ก bounds์ position์ ์ฌ์ฉํ์ฌ ์์ง์์ด ์๋ ์ ๋๋ฉ์ด์ ์ ๋์ํ๋ ๊ฒ์ด์ฃ .
2. Anchorpoint
Anchorpoint๋ ์ด๋ ํ ๋ณํ์ด ์ผ์ด๋๋ ๊ธฐ์ค์ ์ ๋งํฉ๋๋ค.
iOS๋ ์ผ์ชฝ ์๋จ์ด (0,0) ์ค๋ฅธ์ชฝ ํ๋จ์ด(1,1)์ธ๋ฐ ์ด ๋ฒ์์์ Anchorpoint๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์๋์ ๊ฐ์ด ๊ฐ์ด๋ฐ์ ์ค์ (0.5,0.5)ํ ์๋ ์๊ณ , ์ผ์ชฝ ์๋จ์ธ(0,0)์ผ๋ก ์ค์ ํ ์๋ ์์ต๋๋ค.
Anchorpoint๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ ํ ๋ณํ์ด ๋ฐ์ํ๊ฒ ๋๋๋ฐ, ์ด๋ ํ์ ์ด ์ ์ฉ๋ ๋ ๊ฐ์ฅ ๋๋๋ฌ์ง๋๋ค.
Anchorpoint๋ฅผ ๊ฐ์ด๋ฐ(0.5,0.5)๋ก ์ง์ ํ์ ๋ ๊ฐ์ด๋ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ ๋๊ธฐ ๋๋ฌธ์ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ํ์ ๋ฉ๋๋ค.
ํ์ง๋ง ์ผ์ชฝ ์๋จ(0,0)๋ก ์ง์ ํ์ ๋ ์ผ์ชฝ ์๋จ์ ๊ธฐ์ค์ผ๋ก ํ์ ๋๊ธฐ ๋๋ฌธ์ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ํ์ ๋ฉ๋๋ค.
๋ณดํต์ ๊ฒฝ์ฐ Anchorpoint๋ ๊ฐ์ด๋ฐ๋ก ์ค์ ๋์ด ์์ต๋๋ค.
3D
Layer๋ ์์์ ๋ค๋ฃฌ 2์ฐจ์(์์น,์ขํ) ์ ๋ณด๋ฟ๋ง ์๋๋ผ 4x4 ํ๋ ฌ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๊ณ ์ด๊ฒ์ 3์ฐจ์์ผ๋ก Layer๋ฅผ ์กฐ์ํ ์ ์๊ฒ ๋ฉ๋๋ค.
ํ๋ ฌ ์ํ์ ์ฌ์ฉํ์ฌ x์ถ,y์ถ,z์ถ์ ๊ธฐ์ค์ผ๋ก ๋ณํ์ ์กฐ์ํ ์ ์์ต๋๋ค.
3D ๋ณํ์ ๋ํด ์ ๋ค๋ฃจ๊ณ ์ถ๋ค๋ฉด CATransform3D๋ฅผ ๊ณต๋ถํ์๋ฉด ๋ฉ๋๋ค.
Layer Tree
๋งจ ์ฒ์ ์ธ๊ธํ๋ค์ํผ Layer๋ SubLayer๋ฅผ ๊ฐ์ง ์ ์์ด ์๋์ ๊ฐ์ด ๊ณ์ธต ๊ตฌ์กฐ๋ก ํ์ฑ๋ฉ๋๋ค.
ํนํ presentationLayer๋ฅผ ์ด์ฉํ๋ฉด ์ ๋๋ฉ์ด์ ์ค๊ฐ(ํด๋น ์๊ฐ์ ๋ํ๋๋ ํ๋ฉด)์ ์ด๋ ํ ์์ฑ์ ๊ฐ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋๋ฉ์ด์ ์งํ ์ค์ ์ด๋ ํ ์์ ์ ํ๊ธฐ ์ ์ฉํฉ๋๋ค.
Layer์ View
Layer๋ View๋ฅผ ๋์ฒดํ์ง ์๊ธฐ ๋๋ฌธ์ Layer ์์ฒด๋ก๋ง ์๊ฐ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
Layer๋ View์ ๋ด์ฉ์ ๋ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ฑฐ๋ ์ ๋๋ฉ์ด์ ํ ์ ์์ง๋ง, ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ปจํ ์ธ ๋ฅผ ๊ทธ๋ฆฌ๊ฑฐ๋ ๋ฑ์ ๋ค๋ฅธ ๋ง์ ์์ ์ ์ํํ์ง๋ ์์ต๋๋ค.
๊ณ ๋ก ์ํธ ์์ฉ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ํด์ View๊ฐ ์กด์ฌํด์ผ ํฉ๋๋ค.
๋ชจ๋ View์๋ Layer๊ฐ ์กด์ฌํด์ผ ํ์ง๋ง, ๋ชจ๋ Layer์ View ์กด์ฌํด์ผ ํ๋ ๊ฒ์ ์๋๋๋ค.
์ฆ, Layer๋ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์๋๋ฐ ์ด๊ฒ์ ๋ ๋ฆฝ ์คํํ ๋ ์ด์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ด๊ฒ์ ์ฌ๋ฌ ์์น์์ ๋์ผํ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๋ฑ์์ ์ฌ๋ฌ View๋ฅผ ๋ง๋๋ ๋์ ์ฌ๋ฌ ๋ ๋ฆฝํ ๋ ์ด์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
Reference