Bibi's DevLog ๐ค๐
[Swift] ์ฝ๋๋ก AutoLayout ์ค์ ํ๊ธฐ (Constraint) ๋ณธ๋ฌธ
[Swift] ์ฝ๋๋ก AutoLayout ์ค์ ํ๊ธฐ (Constraint)
์ฐธ๊ณ ํ๊ธฐ : Apple ๊ณต์ ๋ฌธ์: Understanding Auto Layout
AutoLayout์ด๋
: ๋ทฐ ๊ณ์ธต ๋ด์์ ๋ทฐ๋ค์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ฐ ๋ทฐ๋ค์ ์ ์ฝ์ฌํญ(constraint)์ ๊ธฐ๋ฐ์ผ๋ก ๋์ ์ผ๋ก ๊ณ์ฐํ๋ ๊ฒ.
์ฌ๋ฌ ํด์๋๋ฅผ ์ ์ฐํ๊ฒ ์ง์ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
AutoLayout vs Frame-Based Layout
- Frame-Based Layout
- ์ ์๋ ์ขํ(origin - X, Y)์ ์ฌ์ด์ฆ(size - width, height)์ ๋ฐ๋ผ ๋ทฐ๊ฐ ๊ทธ๋ ค์ง๋ค.
- AutoLayout
- ์ ์๋ ์ ์ฝ์ฌํญ(constraint)์ ๋ฐ๋ผ ๋ทฐ๊ฐ ๊ทธ๋ ค์ง๋ค.
- constraint = ์ง๊ธ ๋ทฐ์ ๋๋น, ๋์ด ๋ฐ ์ด๋ค ๋ทฐ๋ก๋ถํฐ ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง ๋ฑ์ ๋ํ๋
- width, height, top, bottom, left, right, leading, trailing, centerX, centerY ...
Contstraint
- top์ leading, bottom๊ณผ trailing
- ํ์ฌ ์์น์์ "์ผ์ชฝ์ผ๋ก ์ผ๋ง๋ ๋จ์ด์ง์ง" : ๋ ์์๋ก ์ค์ (ex -
constant: 10
) - ํ์ฌ ์์น์์ "์ค๋ฅธ์ชฝ์ผ๋ก ์ผ๋ง๋ ๋จ์ด์ง์ง" : ๋ ์์๋ก ์ค์ (ex -
constant: -10
)
- ํ์ฌ ์์น์์ "์ผ์ชฝ์ผ๋ก ์ผ๋ง๋ ๋จ์ด์ง์ง" : ๋ ์์๋ก ์ค์ (ex -
- centerX, centerY : x/y์ ๋ํ ์ค์๊ฐ
AutoLayout ์ค์ ํ๊ธฐ
- UI ์์๋ค ์ ์ํ๊ธฐ
- AutoLayout์ ์ค์ ํ ๋ทฐ์ ๋ํด ๋ฐ๋์
.translateAutoresizingMaskIntoConstraints = false
๋ก ์ค์ ํด ์ฃผ์ด์ผ ํ๋ค. - If you want to use Auto Layout to dynamically calculate the size and position of your view, you must set this property to false, and then provide a non ambiguous, nonconflicting set of constraints for the view.
- AutoLayout์ ์ค์ ํ ๋ทฐ์ ๋ํด ๋ฐ๋์
- addSubView๋ก ์ถ๊ฐํ๊ธฐ
self.addSubview(์ถ๊ฐํ ๋ทฐ)
- bind Constraints - ๋ทฐ์ ์ ์ฝ์ฌํญ ์ค์ ํ๊ธฐ
topAnchor
,bottomAnchor
,leftAnchor
,rightAnchor
widthAnchor
,heightAnchor
centerXAnchor
,centerYAnchor
leadingAnchor
,trailingAnchor