RunLoop
๋ทฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ๊ณ์ ๋ฐ๋ณตํด์ ์คํ๋๋ค.
Update Cycle
1/60์ด์ ์ฃผ๊ธฐ๋ง๋ค ํ๋ฉด์ ๋ค์ ๊ทธ๋ ค์ค๋ค.
Layout, Display, Constraints๋ฅผ ์ ๋ฐ์ดํธ ํ๋ค.
Main Run Loop
์ฌ์ฉ์์ ์ ๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ ์ ํ ์๋ต์ ํธ๋ฆฌ๊ฑฐํ๋ค.
Main Run Loop์ ๋ง์ง๋ง ๋จ๊ณ์์๋ Update Cycle์ด ๋ฐ์ํ๋ค.
Drawing Cycle
1. ์ฑ์ด ์์๋ ๋ ์ฑ์ ๋ด๋นํ๋ Main Run Loop๊ฐ ์๊ธฐ๊ณ
2. Main Run Loop๋ ์ฌ์ฉ์์ ์ ๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ํธ๋ฆฌ๊ฑฐํ๋ค.
3. Main Run Loop์ ๋ง์ง๋ง ๋จ๊ณ์ Update Cycle์ด ๋ฐ์ํ์ฌ ํ๋ฉด์ด ๋ค์ ๊ทธ๋ ค์ง๋ค. (ํ์ํ ๊ฒฝ์ฐ ๋ทฐ๋ฅผ ์ ์ฒด์ ์ผ๋ก ๋ค์ ๊ทธ๋ฆผ)
Update cycle ์ค ํธ์ถ๋๋ ๋ฉ์๋
updateConstraints
์ ์ฝ์กฐ๊ฑด(์คํ ๋ ์ด์์)์ ์ ๋ฐ์ดํธํ๋ค.
layoutSubviews
ํ์ ๋ทฐ์ layout์ ์ฌ์กฐ์ ํ๋ค.
drawRect
๋ด๋ถ ์ปจํ ์ธ ๋ฅผ ๊ทธ๋ฆฐ๋ค.
Update Cycle์ด ๋ฐ์ํ ๋ updateConstraints, layoutSubviews, drawRect๊ฐ ํธ์ถ๋๋ค.
Drawing์ ์ ์ดํ๋ ๋ฉ์๋
setNeedsUpdateConstraints()
๋ค์ ์ธ์ดํด์ ์คํ ๋ ์ด์์ ์กฐ์ ํ๋๋ก ์ธํ ํ๋ค.
setNeedsLayout()
๋ค์ ์ธ์ดํด์ ๋ ์ด์์ ์กฐ์ ํ๋๋ก ์ธํ ํ๋ค.
setNeedsDisplay()
๋ค์ ์ธ์ดํด์ ๊ทธ๋ฆผ์ ๋ค์๊ทธ๋ฆฌ๋๋ก ์ธํ ํ๋ค.
updateConstraintsIfNeeded()
๊ณง๋ฐ๋ก ์คํ ๋ ์ด์์์ ์กฐ์ ํ๋ค.
layoutIfNeeded()
๊ณง๋ฐ๋ก ๋ ์ด์์์ ์กฐ์ ํ๋ค.
์ฌ์ฉ ์์
UIView.animate(withDuration: 2) {
self.view.layoutIfNeeded()
} completion: { success in
print("์ ๋๋ฉ์ด์
")
}
layoutIfNeeded()๋ฅผ ํธ์ถํด์ผ๋ง AutoLayout์ด ์์ง์ด๋ ํจ๊ณผ๊ฐ ๋ฐ์ํ๋ค.
'๐ iOS > UIkit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
AVFoundation (0) | 2023.06.29 |
---|---|
SwiftLint ์ค์นํ๊ณ ์ ์ฉํ๊ธฐ (0) | 2023.04.24 |
[UIkit] Alert (0) | 2023.03.27 |
App Lifecycle (0) | 2023.03.23 |
ViewController LifeCycle (0) | 2023.03.23 |