์ด ๋ ๊ฐ์ง๋ ์ด๋ ํ์ด๋ฐ์ ์คํ๋๋์ง๊ฐ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
func draw(_ rect: CGRect)
์ด๋ ๋ ๋ถ๋ ค์ง๋ ๋ฉ์๋์ธ๊ฐ
๋ทฐ๋ func draw(_ rect: CGRect)
๋ก ๊ทธ๋ ค์ง๋๋ค.
๋ทฐ๊ฐ ์ฒ์ ์์ฑ๋ ๋์๋ func draw(_ rect: CGRect)
๋ก ๋ทฐ๊ฐ ๊ทธ๋ ค์ง๊ฒ ๋ฉ๋๋ค.
๐ก์์๋ฐ์ custom class์์ ์ฌ์ฉ๋ ๋์๋ super๋ฅผ ๋ ๋ถ๋ฌ์ผํ๋?
UIView
์ func draw(_ rect: CGRect)
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฌด ์ฒ๋ฆฌ๋ ํ์ง ์๊ธฐ ๋๋ฌธ์, UIView
๋ฅผ ์์๋ฐ์ custom view์ ๊ฒฝ์ฐ์๋ super.rect(rect)
๋ฅผ ๋ถ๋ฅด์ง ์์๋ ๋ฉ๋๋ค.
ํ์ง๋ง UILabel
, UITextView
๋ฑ UIView
๋ฅผ ์์๋ฐ์ view๋ฅผ ์์๋ฐ์ custom view์ func draw(_ rect: CGRect)
์์๋ super๋ฅผ ๋ถ๋ฌ์ฃผ์ด์ผ ํฉ๋๋ค.
func setNeedsDisplay()
์ด๋ ๋ ๋ถ๋ ค์ง๋ ๋ฉ์๋์ธ๊ฐ
๋ทฐ๊ฐ ์๋ก ๊ทธ๋ ค์ ธ์ผํ ๋, reload๊ฐ ํ์ํ ๋, ๊ฐ๋ฐ์๊ฐ ์คํ์ํค๋ ๋ฉ์๋์ ๋๋ค.
ํผ๋ํด์ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค๊ณผ๋ ๋ฌด์์ด ๋ค๋ฅธ๊ฐ
setNeedsDisplay
- ๋ทฐ๊ฐ ์ฒ์ ์์ฑ๋ ๋ ๋ ์ด์์์ด ๊ตฌ์ฑ๋๋ ์ฌ์ดํด์ ์ฒ์๋ถํฐ ์คํ์ํค๋ ๋ฉ์๋์ ๋๋ค.
- ๋ทฐ์ ์ถ๊ฐ๋ ๋ชจ๋ subView๋ฅผ ์ ๋ถ ์๋ก ๊ทธ๋ฆด ํ์๊ฐ ์์ ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋์ ๋๋ค.
layoutIfNeeded
- ํ๋ฉด ์ฌ๊ตฌ์ฑ์ด ํ์ํด์ง๋ฉด view์ ๊ทธ ๋ทฐ์ subView๊ฐ ์ ๋ถ ์ฌ๋ฐฐ์น๋ฉ๋๋ค.
- ์๋ฅผ๋ค์ด
hogeView.layoutIfNeeded()
๋ฅผ ์คํํ ๊ฒฝ์ฐ - hogeView์ hogeView์ ์ถ๊ฐ๋ subView๋ค์ด super view์ ๋ ์ด์์์ด ์ฌ์ค์ ๋๋ฉด ๋ฐ๋ก ์๋ก ์ฌ๋ฐฐ์น๋ฉ๋๋ค.
- trigger๋ฅผ ์ค์ ํ๋ ๋๋์ ๋ฉ์๋์ด๊ธฐ์
setNeedsDisplay
,setNeedsLayout
๋ณด๋ค ๋ฌด๊ฒ์ต๋๋ค. - ์ด ๋ฉ์๋๋ Main thread์์ ๋ณผ๋ ค์ ธ์ผํฉ๋๋ค !!!! (๋น์ฐํ ์๊ธฐ)
layoutSubviews
- iOS๊ฐ ํ๋ฉด์ ์๋ก ๊ทธ๋ฆด ๋ ๋ถ๋ฅด๋ ๋ฉ์๋๋ก ์ง์ ๋ถ๋ฅด๋๊ฑด ์๋ฉ๋๋ค !!!!!!!! โ ๏ธ
์ ๋ฆฌ
- view๊ฐ ์ฒ์ ์์ฑ๋ ๋ ๋ ์ด์์ ์ค์ ์ ์ถ๊ฐํ๊ณ ์ถ๋ค ๐
func draw(_ rect: CGRect)
- ๋ชจ๋ superView์ ๋ชจ๋ subView๋ฅผ ๋ฐ๋ก ์๋ก ๊ทธ๋ฆฌ๊ณ ์ถ๋ค ๐
func setNeedsDisplay()
- ํน์ view์ ๊ทธ view์ ์ถ๊ฐ๋ subView๋ฅผ ์๋ก ๊ทธ๋ฆฌ๊ณ ์ถ๋ค ๐
layoutSubviews