ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฑ Auto Layout - Anatomy of a Constraint
๐ฏ Auto Layout์ด๋?
Auto Layout Guide์ ์ ์๋ฅผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
Auto Layout dynamically calculates the size and position of all the views in your view hierarchy, based on constraints placed on those views.
์คํ ๋ ์ด์์์ ๋ทฐ์ ์ ์๋ ์ ์ฝ๋ค์ ๊ธฐ๋ฐ์ผ๋ก ๋ทฐ ๊ณ์ธต์์ ๋ชจ๋ ๋ทฐ๋ค์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋์ ์ผ๋ก ๊ณ์ฐํด์ค๋๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
For example, you can constrain a button so that it is horizontally centered with an Image view and so that the buttonโs top edge always remains 8 points below the imageโs bottom. If the image viewโs size or position changes, the buttonโs position automatically adjusts to match.
๊ฐ๋จํ ๋งํ๋ฉด, ๋ฒํผ์ ์ ์ฝ์ ์ค ๋ ๋ฒํผ์ ๊ฐ์ฅ ์๋ถ๋ถ์ด ๋ฒํผ ์๋จ์ ์กด์ฌํ๋ ์ด๋ฏธ์ง์ ๊ฐ์ฅ ์๋์ชฝ์์๋ถํฐ 8 ํฌ์ธํธ ๋จ์ด์ง๊ฒ ์ค์ ํ๋ค๋ฉด View์ ์ฌ์ด์ฆ๊ฐ ๋ฐ๋๊ฑฐ๋(์๋ฅผ ๋ค๋ฉด ๋ค๋ฅธ ๊ธฐ๊ธฐ) ์์น๊ฐ ๋ฐ๋๋ฉด ๋ฒํผ์ ์์น๊ฐ ์๋์ผ๋ก ์ฌ์กฐ์ ๋ฉ๋๋ค.
This constraint-based approach to design allows you to build user interfaces that dynamically respond to both internal and external changes.
๊ฒฐ๊ตญ ์คํ ๋ ์ด์์์ ๋ณํ์ ๋ํด ๋์ ์ผ๋ก ์๋ํ๋ ๋ฐ์ํ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์๊ฒ ํฉ๋๋ค. ๊ธฐ์ค์ ์ ์ค์ฌ์ผ๋ก ๊ฑฐ๋ฆฌ๋ฅผ ํตํด ์ ๋์ ์ธ ์์น๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ์๋๋ผ ์์๊ฐ์ ์๋์ ์์น ์ ์ฝ์ ํตํด ์์์ ์์น๋ฅผ ์ ํ๋ ๋ฐฉ์์ ๋๋ค.
๐ Constraint(์ ์ฝ) ์ค์
์๋๋ ๋ ์์ Blue, Red ๊ฐ์ ๊ฑฐ๋ฆฌ 8์ธ ์ ์ฝ์ ์ฃผ๋ ๊ทธ๋ฆผ์ ๋๋ค.
RedView์ BlueView๋ ๊ฐ๊ฐ ์ ์ฝ์ ๋ฐ์ ์์๋ฅผ ์๋ฏธํ๋ฉฐ ๋ค์ Leading์ ๊ทธ ์์์ ์์์ (leading edge), trailing์ ์์ Blue์ ๋ ์ (trailing edge)์ ์๋ฏธํ๊ณ ๊ทธ ๊ฑฐ๋ฆฌ๋ฅผ Constant 8.0์ผ๋ก ์ค์ ํ์ต๋๋ค.
Constraints๋ฅผ ์ค ๋์ ํ์ํ ๊ธฐ์ค๋ค์ ์๋์ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ ์ผ์ชฝ์ด Leading, ์ค๋ฅธ์ชฝ์ด Trailing์ธ ์ด์ ๋ ๊ธ์ ์ฝ๋ ๋ฐฉํฅ์ด ์์ด ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์์๋ถํฐ ์ค๋ฅธ์ชฝ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. RTL(Right to Left)์ ๋ฐ๋ผ ์ผ์ชฝ ๋ฐฉํฅ์ Leading์ผ๋ก ์ค์ ํ์ต๋๋ค.
์์ attributes๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
size attributes: Width, Height
location attributes: Top, Bottom... etc.
size attributes๋ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์์ฑ์ด๋ฉฐ location attributes๋ ์์น๋ฅผ ๋ํ๋ด๋ ์์ฑ์ ๋๋ค.
- size attribute์ location attribute๋ ํจ๊ป ์ธ ์ ์์ต๋๋ค.
- location attributes์ ์์๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. size attributes์๋ ์์๋ฅผ ์ ์ธํ ์ ์์ง๋ง location attributes๋ ์์น๋ฅผ ๊ธฐ๋ฐํ ์๋์ ์ ์ธ์ด๋ฏ๋ก ์์๋ก ํํํ ์ ์์ต๋๋ค.
- location attributes์์๋ multiplier๋ฅผ 1.0์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- location attributes์์ vertical attributes(์์ง)์ horizontal attributes(์ํ)๋ฅผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐฉํฅ์ด ์๋ก 90๋๋ก ์ ์ฝ์ ์ค ์ ์๋ ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
- Leading/Trailing attributes์ Left/Right attributes๋ฅผ ์๋ก ํผ์ฉํ ์ ์์ต๋๋ค. Leading์ Trailing๊ณผ, Left๋ Right๊ณผ ์ฌ์ฉํฉ๋๋ค.
๐ Contraints ์์
์๋๋ contraints์ ์์์ ๋๋ค.
- NotAnAttribute๋ ๊ฐ์ ์ค์ ํ ๋ ์จ์ ํ ์ค๋ฅธ์ชฝ์ Constant(์์์์ 40.0)๋ก ์ค์ ํ๊ธฐ ์ํด ์ฃผ๋ ๊ฐ์ ๋๋ค. ์ซ์๋ผ๋ฉด 0์ผ๋ก ์๊ฐํด๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
- Button_1์ ์ค๋ฅธ์ชฝ ๋์์ 8.0 ๋จ์ด์ง ๊ณณ์ Button_2์ ์ผ์ชฝ ๋์ ๋ฐฐ์นํ๊ฒ ๋ค๋ location attributes ์ ๋๋ค.
- allign์ ์๋ฏธํฉ๋๋ค. ์์์ ์๋๋ก ๋ณ๋ ฌ์ ์ผ๋ก ์์น๋ฅผ ์ง์ ํ ๋ ๊ฐ์ ๋ผ์ธ์ ์กด์ฌํ๊ฒ ํ๋ ๊ฒ์ผ๋ก Button_1๊ณผ Button_2์ ์ผ์ชฝ edge๊ฐ ๊ฐ์ ์ ์์ ์กด์ฌํ๊ฒ ํฉ๋๋ค.
- ๋ ๋ฒํผ์ ๊ฐ๋ก ํฌ๊ธฐ๋ฅผ ๊ฐ๊ฒ ๋ง๋ญ๋๋ค.
- ์์ ๋ทฐ์ ๊ทธ ๋ทฐ์ ์กด์ฌํ๋ ๋ค๋ฅธ ๋ทฐ๊ฐ ์์ ๋, ์์ ๋ทฐ์ ์ ๊ฐ์ด๋ฐ์ ํ์ ๋ทฐ๋ฅผ ๋ฐฐ์นํ๋ attributes์ ๋๋ค.
- ๊ฐ๋ก ์ธ๋ก ๋น์จ์ 1:2๋ก ๋ง๋ค๊ฒ ๋ค๋ ๋ป์ ๋๋ค.
์ฌ๊ธฐ์ Equal(=)์ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ๋ ํ ๋น์ ๊ฐ๋ ์ด ์๋๋๋ค. ํ ๋น ์์๋ ์์ชฝ์ ๊ฐ์ด ๋ฌ๋ผ๋ ์๊ด ์์์ต๋๋ค. ํ์ง๋ง attributes์์ equal์ ์ํ์ ์ผ๋ก ๊ฐ๋ค๋ ์๋ฏธ์ด๋ฉฐ ์์ชฝ์ ๊ฐ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค.
๐ฌ Constraints Inequalities & Priorities
Contraints๋ ๊ผญ equal๋ก ์ค์ ํ ํ์๋ ์์ต๋๋ค.
ํน์ ์ ์ฝ ์กฐ๊ฑด ํ์์ ๊ทธ ์ฌ์ด ๊ฐ์ ๊ฐ์ง ์ ์์ ๋ ์์ฒ๋ผ ๋ถ๋ฑํธ๋ก ํ์ํ ์ ์์ง๋ง equal ์ ์๋ณด๋ค ๋ง์ ์๊ฐ์ ํด์ผํ ํ์๊ฐ ์์ต๋๋ค.
Contraints์๋ ์ฐ์ ๋(Priorities)๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์ฐ์ ๋๊ฐ ์์ ๊ฒฝ์ฐ, ์ถฉ๋ํ๋ Constraints๊ฐ ์๋ค๋ฉด ์ฐ์ ๋๊ฐ ๋์ Constraints๋ง ์๋ํ๊ฒ ๋ฉ๋๋ค. ์ฐ์ ๋๊ฐ ๋์ Constraint๊ฐ ๋จผ์ ์๋ํ๊ณ , ๊ทธ ์ดํ ์ฐ์ ๋์ Constraint๊ฐ ์๋ํ๋ ๊ฐ๋ ์ ๋๋ค.
์ฐ์ ๋๋ 1์์ 1000 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ต๋๋ค.
๐ Intrinsic Content Size(๊ณ ์ ์ปจํ ์ธ ์ฌ์ด์ฆ)
Constraint๋ View์ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฝ์ ์ค ์๋ ์์ง๋ง, ์ปจํ ์ธ ๊ณ ์ ์ ์ฌ์ด์ฆ๋ฅผ ํตํด ์ ์ฝ์ ์ค์ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฒํผ์ ๊ณ ์ ์ฌ์ด์ฆ๋ ์์ ๋ค์ด๊ฐ๋ ํ ์คํธ(title)์ ํฌ๊ธฐ์ ์ฝ๊ฐ์ ๋ง์ง๊ฐ์ ๋ํ ๊ฒ์ ๋๋ค.
So far, all of the examples have used constraints to define both the viewโs position and its size. However, some views have a natural size given their current content. This is referred to as their intrinsic content size. For example, a buttonโs intrinsic content size is the size of its title plus a small margin.
Label ๋ฑ์ ์์๋ ๊ณ ์ ์ฌ์ด์ฆ๊ฐ ์ ํด์ ธ์๊ธฐ ๋๋ฌธ์ ์์ฑํ ํ ๋ฐ๋ก ์์น์ ๋ํ constraints๋ฅผ ์ค๋ ์๋ํฉ๋๋ค. ํ์ง๋ง UIView, NSView์ ๊ฒฝ์ฐ๋ ๊ณ ์ ์ฌ์ด์ฆ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ฑ ํ ์ฌ์ด์ฆ ์ ์ ์์ด ๋ฐ๋ก ์์น์ ๋ํ constraints๋ฅผ ์ฃผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. Text/image views๋ ๊ณ ์ ์ฌ์ด์ฆ๊ฐ ๋ฐ๋ ์ ์์ต๋๋ค. Slider์ ๊ฒฝ์ฐ iOS์์ ๋์ด๋ ๊ณ ์ ๋์ด์๊ณ ๋๋น๋ง ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋์ ์์ฑํ ํ ์์น์ ๋ํ constraints๋ฅผ ์ฃผ๋ฉด ๋์ด์์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋๋น๊ฐ ํ์ ๋์ด ์์ง ์์ ์ํ ๋ฐฉํฅ์ constraints์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๐ CHCR(Contents Compression, Contents Hugging)
Contents Compression: ์ปจํ ์ธ ๊ฐ ์ค์ด๋ค์ง ์์ผ๋ ค๊ณ ๋ฒํฐ๋ ํ์ ๋๋ค.
Contents Hugging: ์ปจํ ์ธ ๊ฐ ๋์ด๋์ง ์์ผ๋ ค๊ณ ๋ฒํฐ๋ ํ์ ๋๋ค.
์ค์ด๋๋ ค๊ณ ํ๋ ํ์ด๋ ๋์ด๋๋ ค๋ ํ์ผ๋ก ์ฐฉ๊ฐํ ์ ์์ง๋ง ์ด ๋ ๊ฐ๋ ์ ๋ฒํฐ๋ ๋ฐ๋ฐ๋ ฅ์ ๊ฐ๊น์ด ๊ฐ๋ ์ ๋๋ค. ์ด๊ฒ ์ญ์ Priority๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
Label์ ๊ฒฝ์ฐ contents๊ฐ ๋์ด๋ ์๋ก ๊ทธ ๊ณ ์ ํฌ๊ธฐ๊ฐ ๋์ด๋ฉ๋๋ค. ๊ทธ๋์ ํฌ๊ธฐ๊ฐ ์ ํด์ง์ง ์์ Label์ ์๋ก ์ํฅ์ ์ฃผ๋ Constraints๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋์ Content Hugging์ ์ค์ ํด์ฃผ๋ฉด ํฌ๊ธฐ๊ฐ ๋์ด๋๋๋ฐ ํ๊ณ๊ฐ ์๊ธฐ๋ฉฐ, ๋ฐ๋๋ก Content compression์ ์ค์ ํ๋ฉด ๋ ์ด๋ธ์ด ๋๋ฌด ์์์ง๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค.
'iOS ์ฑ๊ฐ๋ฐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] - Table View & Collection View (ํ ์ด๋ธ ๋ทฐ, ์ปฌ๋ ์ ๋ทฐ) (0) | 2021.04.13 |
---|---|
[iOS] - Stanford CS193p iOS ๊ฐ์ 3๊ฐ ์ ๋ฆฌ by Paul Hegarty (0) | 2021.04.08 |
[iOS] - Control Event(์ปจํธ๋กค ์ด๋ฒคํธ) (0) | 2021.04.06 |
[iOS] - Stanford CS193p iOS ๊ฐ์ 2๊ฐ ์ ๋ฆฌ by Paul Hegarty (0) | 2021.04.05 |
[iOS] - Stanford CS193p iOS ๊ฐ์ 1๊ฐ ์ ๋ฆฌ by Paul Hegarty (0) | 2021.04.02 |
- Total
- Today
- Yesterday
- ๋ฐฐ์ดํฉ์น๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- ๋ ์ง ๊ณ์ฐ#BOJ#์์ ํ์#Python
- NumberofDiscIntersections#Codility#Sort#Python
- Distinct#Codility#Python
- API#lazy#
- ์ํธ์ฝ๋#dp#BOJ#Python
- ๋ฏธ๋ก ํ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ์ฌ์๊ฐ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ์์ด์ฌ์ดํด#BOJ#Python
- ์ข ์ด์๋ฅด๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- PassingCars#Codility#Python
- django
- ํฐํ๋น์น#๋ฆฌ์ฝ#xbox#controller
- Swift#Tuples#Range
- Brackets#Stacks and Queues#Codility#Python
- Triangle#Sorting#Codility#Python
- ํ์ด์ฌ์๊ณ ๋ฆฌ์ฆ์ธํฐ๋ทฐ#4์ฅ
- ํ ํ๋ก์ ํธ#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ์ฟผ๋ํธ๋ฆฌ#BOJ#๋ถํ ์ ๋ณต#Python
- filter#isalnum#lower
- ํ ๋งํ #๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ๋ฆฌ๋ชจ์ปจ#์์ ํ์#BOJ#Python
- ๋ฐ๋ณต์์ด#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- django#slicing
- ๋์ ์๋ฅด๊ธฐ#์ด๋ถํ์#BOJ#Python
- ๋ณ๋ ๋์ดํธ#BOJ#ํ์๋ฒ#Python
- ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ#BackTracking
- ๋๋ฌด์๋ฅด๊ธฐ#BOJ#์ด๋ถํ์#Python
- N์ผ๋ก ํํ#DP#Programmers#Python
- ๊ณต์ ๊ธฐ ์ค์น#BOJ#์ด๋ถํ์#Python
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |