View Drawing Cycle
Veiw Drawing Cycle์ด ๋ฌด์์ผ๊น?
view๊ฐ ๋ก๋๋๊ฑฐ๋ ๋ณ๊ฒฝ์ด ์์ ๋, ํ๋ฉด์ ๊ทธ๋ ค์ง๋ Cycle์ ๋งํ๋ค.
view๊ฐ ๋ก๋ ์, ์์คํ
์ด UIView์๊ฒ draw ๋ฉ์๋๋ฅผ ํตํด ๋๋ก์์ ์์ฒญํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋
์ท์ ์บก์ณํ์ฌ UIView์๊ฒ ์ ๋ฌํ๋ค.
๊ทธ ๋ค์ ๋ทฐ์ ์ปจํ
์ธ ๋ณ๊ฒฝ ์ ๊ด๋ จ ๋ฉ์๋๋ค์ ํธ์ถํ์ฌ ์์คํ
์๊ฒ ์์ฒญํ๋ค.
iOS์ ์ด๋ฒคํธ๋ ๊ฐ ์ค๋ ๋๋ง๋ค ์กด์ฌํ๋ Run loop๋ฅผ ํตํด ์ฒ๋ฆฌ๋๋ค.
๊ทธ ์ค Main Run loop๋ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
์ด Main Run loop์ ๋ง์ง๋ง ๋จ๊ณ์์ 'Update Cycle'์ด๋ผ๋ ๊ฒ์ด ๋ฐ์ํ๋ค.
์ฌ๊ธฐ์ Layout(size, position), Display(color, text, image), Constraints(์ ์ฝ์กฐ๊ฑด)๋ฅผ ์
๋ฐ์ดํธํ๋ ์์
์ ์ํํ๋ค.
Display์ ๊ฒฝ์ฐ draw,
Layout์ ๊ฒฝ์ฐ layoutSubviews,
Constraints์ ๊ฒฝ์ฐ updateConstraints๊ฐ ๊ทธ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
์ด๋ค์ ์ต์ด๋ก View๊ฐ load ๋์ด ํ๋ฉด์ ๋ํ๋ ๋๋ ๋ถ๋ ค์ง๋ค. (-> viewDidLoad)
์๋ ๊ฐ๋จํ ์์๋ฅผ ํตํด์
View Drawing Cycle์ ๋ํด์ ์์๋ณด์.
tableViewCell.Xib ํ์ผ์ ํตํด ์คํ ๋ ์ด์์์ ์ก์๋ค.
(์ผ์ชฝ: titleImageView / ์ค๋ฅธ์ชฝ: subtitleImageView)
์ผ์ชฝ imageView๋
1:1 ๋น์จ์ ๊ณ ์ ๋๋น ๊ฐ 66์ ์ค์ ํด์คฌ๋ค.
(-> ๊ธฐ๊ธฐ ํฌ๊ธฐ์ ์๊ด์์ด ๋ฌด์กฐ๊ฑด ๋๋น 66 ๊ณ ์ ๋จ)
์ค๋ฅธ์ชฝ imageView๋
1:1 ๋น์จ์ ๋๋น๋ฅผ ๋ทฐ์ Equal Widths๋ฅผ ์คฌ๋ค.
(-> ๊ธฐ๊ธฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ํด๋น ๋๋น๋น์จ๋๋ก ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ๋ง์ถฐ์ง)
์ด๋, ๋ imageView๋ฅผ ์์ผ๋ก ๋ง๋ค๊ธฐ ์ํด์
cornerRadius๋ฅผ ์๋์ ๊ฐ์ด ์ค์ ํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ํ
์ด๋ธ๋ทฐ ์
์ ๋ทฐ๊ฐ UI๋ถ๋ถ์ ํ ๋ฒ๋ง ์คํ๋ผ๋ ์๊ด์๊ธฐ ๋๋ฌธ์
awakeFromNib์ ์์ฑํด์ฃผ์๋ค.
titleImageView.layer.cornerRadius = titleImageView.frame.width / 2
subtitleImageView.layer.cornerRadius = subtitleImageView.frame.width / 2
์ด๋ ๊ฒ ํ ๋ค์ ์คํํด๋ณด๋ฉด,
๋๋น๋ฅผ ๊ณ ์ ์ผ๋ก 66์ ์ค imageView๋ ์์ผ๋ก ๋ง๋ค์ด์ก๋๋ฐ,
๋๋น๋ฅผ ๋น์จ๋ก ์ค์ ํ imageView๋ ์์ด ์ด์ํ๊ฒ ๋ง๋ค์ง ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ทธ ์ด์ ๋
๋์ด ๋๋น๊ฐ ์ ๋์ ์ธ ์ฌ์ด์ฆ๋ฉด, ๊ทธ ๋๋น์ ๋ง์ถฐ ๊ทธ๋ ค์ง๊ธฐ ๋๋ฌธ์ ์์ด ๋์ฌ ์ ์์ง๋ง,
๋น์จ์ ํตํด์ ๋์ด์ ๋๋น๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ, ํ๋ฉด์ด ๊ทธ๋ ค์ง๊ณ awakeFromNib์ ์คํํ๊ฒ ๋๋ฉด,
Xib ๋น์จ ๊ทธ๋๋ก ๊ทธ๋ ค์ง๊ธฐ ๋๋ฌธ์ ๋ทฐ์ ๊ทธ๋ ค์ง ๋ชจ์ต์ด ์๋ฒฝํ ์์ผ๋ก ๋์ค์ง ์๋ ๊ฒ์ด๋ค.
(awakeFromNib์ ์ด๊ธฐํ ๋ ๋ ์คํ๋๊ธฐ ๋๋ฌธ)
๊ทธ๋ ๋ค๋ฉด ๋ทฐ๋ฅผ ๊ทธ๋ฆฌ๋ ์ฝ๋๋ฅผ awakeFromNib์ ์์ฑํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์ด๋ ๊ฒ ์ฒ์์๋ ์์ด ์๋์๋ค๊ฐ ์คํฌ๋กค์ ํ๋ค๋ณด๋ฉด, ์์ด ๋ง๋ค์ด์ง๋ค..
๊ทธ๋์ ์ฒ์์ ๋ณด์ฌ์ง ๋๋ถํฐ ์์ผ๋ก ๊ทธ๋ ค์ง๊ฒ ํ๊ธฐ ์ํด์๋
์์์ ์ธ๊ธํ๋ layoutSubView ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ์์ ์ layout์ด ํ ๋ฒ ๋ ์
๋ฐ์ดํธ ๋๋ค.
override func layoutSubviews() {
super.layoutSubviews()
subtitleImageView.layer.cornerRadius = subtitleImageView.frame.width / 2
}
์ด๋ ๊ฒ ํด์ฃผ๊ณ , ์คํ์์ผ๋ณด๋ฉด?
์ด๋ ๊ฒ ์ ์์ ์ผ๋ก ๋ณด์ฌ์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'Swift > Xcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] CLLocationManager (0) | 2024.05.31 |
---|---|
[Swift] UIButton Configuration (0) | 2024.05.30 |
[Swift] Delegate ํจํด (0) | 2024.05.26 |
[Swift] UserDefaults (0) | 2024.05.25 |
[Swift] tag ํ์ฉํ์ฌ ์ฝ๋ ๊ฐ์ํํ๊ธฐ (0) | 2024.05.20 |