์๋ ํ์ธ์~
์ค๋์ UIStackView์์ ์ฌ๋ฌ ๋ฒํผ์
์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค : )
UIStackView
UIStackView๋ ์๋ธ ๋ทฐ๋ค์ ์์์
๋์ ์ผ๋ก ๋ด๋ถ ํฌ๊ธฐ๋ ์์น๋ฅผ ์กฐ์ ํ ์ ์๋๋ก ๋ง๋ UIView์ ๋๋ค.
์ฌ๋ฌ๊ฐ์ง ์์ฑ๋ค์ ๊ฐ์ง๊ณ ์๋๋ฐ
ํ๋์ฉ ์์๋ณด๊ฒ ์ต๋๋ค.
1. Axis
- ์ด๋ค ๋ฐฉํฅ์ผ๋ก ์๋ธ ๋ทฐ๋ค์ ๋์ ๊ฒ์ธ์ง ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
- Horizontal ํน์ Vertical๋ก ์ค์ ํ ์ ์์ต๋๋ค.
2. Spacing
- ๊ฐ ์๋ธ๋ทฐ๋ค์ ๊ฐ๊ฒฉ์ ์ค์ ํฉ๋๋ค.
3. Alignment
- ์๋ธ ๋ทฐ๋ค์ ์ ๋ ฌ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ์์ฑ์ ๋๋ค.
- ๊ธฐ์กด์ ์ ํด๋์๋ Axis์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ๋ ฌ๋ฉ๋๋ค.
(1) Horizontal
- Fill: StackView์ ๋์ด๋งํผ ์๋ธ ๋ทฐ๋ค์ ๋์ด๊ฐ ์ ํด์ง๋๋ค.
- Center: StackView์ ์๋ธ ๋ทฐ๋ค์ ๋์ด๋ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๊ณ StackView์ ์ค์์ ์ ๋ ฌํ ์ ์์ต๋๋ค.
- Top: StackView์ ์๋ธ ๋ทฐ๋ค์ ๋์ด๋ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๊ณ StackView์ ์๋จ์ ์ ๋ ฌํฉ๋๋ค.
- Botton: StackView์ ์๋ธ ๋ทฐ๋ค์ ๋์ด๋ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๊ณ StackView ํ๋จ์ ์ ๋ ฌํฉ๋๋ค.
(2) Vertical [ Horizontal๊ณผ๋ ๋ฐ๋๋ก ์๋ธ ๋ทฐ๋ค์ ๋๋น๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๊ฒ ๋ฉ๋๋ค ]
- Fill: StackVIew์ ๊ฐ๋ก ๊ธธ์ด๋งํผ ์๋ธ ๋ทฐ๋ค์ ๋๋น๊ฐ ์ ํด์ง๋๋ค.
- Center: StackVIew์ ์๋ธ ๋ทฐ๋ค์ ๋๋น๋ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๊ณ ์ค์์ ์ ๋ ฌํฉ๋๋ค.
- Leading: StackView์ ์๋ธ ๋ทฐ๋ค์ ๋๋น๋ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๊ณ StackView์ ์ข์ธก์ ์ ๋ ฌ๋ฉ๋๋ค.
- trailing: StackView์ ์๋ธ ๋ทฐ๋ค์ ๋๋น๋ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๊ณ StackView์ ์ฐ์ธก์ ์ ๋ ฌ๋ฉ๋๋ค.
4. Distribution
์์๋์ด์ผํ ์ฌ์ค
๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ธ ๋ทฐ๋ค์ ๋๋น์ ํฉ์ด StackView๋ณด๋ค ํฌ๊ฒ ๋๋ฉด compression resistance priority ์ ๋ฐ๋ผ ์๋ธ ๋ทฐ๋ค์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ , ๋ฐ๋๋ก ์๋ธ ๋ทฐ๋ค์ ๋๋น์ ํฉ์ด StackView์ ๋๋น๋ณด๋ค ์์ผ๋ฉด hugging priority์ ๋ฐ๋ผ ๋ทฐ๋ค์ ๋๋น๋ฅผ ํ์ฅ์ํค๊ฒ ๋๋ ๊ฒ์ ์์๋์ด์ผํฉ๋๋ค.
- compression resistance priority: ์ต์ ํฌ๊ธฐ์ ๋ํ ์ ํ ์ฐ์ ์์
- hugging prioity: ์ต๋ ํฌ๊ธฐ์ ๋ํ ์ ํ ์ฐ์ ์์
- Fill : ํ์ฌ ๊ธฐ์ค Axis๋ก ์๋ธ ๋ทฐ๋ค์ ์ฑ์ฐ๊ธฐ ์ํ ์์ฑ์ ๋๋ค.
- Fill Equally: ๊ฐ๊ฐ์ ์๋ธ ๋ทฐ๋ค์ ๋๋น/๋์ด๊ฐ ์ด๋ ํ๊ฐ์ ๊ด๊ณ์์ด ๋ชจ๋ ๋์ผํ ๋๋น/๋์ด๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
- Fill Proportionally: ๊ฐ๊ฐ์ ์๋ธ ๋ทฐ๋ค์ Intrinsic content size๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋น/๋์ด๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ฆ, ๋ฒํผ์ด๋ผ๋ฉด titleLabel์ ๊ธธ์ด(๊ธ์ ์)์ ๋ฐ๋ผ ๋๋น๊ฐ ์ ํด์ง๊ณ ํฐํธ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋์ด๊ฐ ์ ํด์ง๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
- Equal Spacing: StackView ๋ด๋ถ๋ฅผ ๊ฐ๊ฐ์ ์๋ธ ๋ทฐ๋ค์ ๊ฐ๊ฒฉ์ ๋์ผํ๊ฒ ์ ์ฉํ์ฌ ์ฑ์ฐ๊ฒ ๋ฉ๋๋ค.
- Equal Centering: ์๋ธ ๋ทฐ๋ค์ ์ค๊ฐ ์ง์ ์ผ๋ก๋ถํฐ ๊ฑฐ๋ฆฌ๊ฐ ๋์ผํ๋๋ก Spacing์ ๊ฒฐ์ ํ๊ณ ์ ๋ ฌํ๊ฒ ๋ฉ๋๋ค.
5. ์ด์
UIStackView๋ฅผ ์ฌ์ฉํ์ฌ 5๊ฐ์ ๋ฒํผ์ ์ธ๋ก๋ก ์ ๋ ฌํ๋ ค๊ณ ํ์ผ๋ ๊ฐ๊ฐ์ ๋ฒํผ์ ์ฌ์ด์ฆ๊ฐ ์ค๊ตฌ๋๋ฐฉ์ด์์ต๋๋ค.
๋ฐ๋ผ์ ์์ ๋ด์ฉ์ ์์งํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌํ๊ฒ ๋๋ฉด ์ ์์ ์ผ๋ก ๋์ผํ ์ฌ์ด์ฆ๋ก ์ ๋ ฌ์ด ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
func setArchitectureStackView(names: [String], nextPages: [NextPage], verticalSpacing: CGFloat) {
backgroundColor = .white
axis = .vertical
alignment = .fill // Axis๊ฐ Vertical์ด๋ฏ๋ก ๋๋น๋ฅผ ๊ฝ์ฑ์๋๋ค.
spacing = verticalSpacing
distribution = .fillEqually // ๋ชจ๋ ๋์ผํ ๋์ด์ ๋๋น๋ฅผ ๊ฐ์ ธ์ผํ๋ฏ๋ก FillEqually
for (name, nextPage) in zip(names, nextPages) {
let architectureButton = ArchitectureButton()
architectureButton.initializeNextPage(title: name, nextPage: nextPage)
addArrangedSubview(architectureButton)
}
}
์ค๋ช : ๊ฐ ๋ฒํผ์ ์ด๋ฆ, ๊ฐ ๋ฒํผ์ด ๋์ด๊ฐ์ผ ํ๋ ํ๋ฉด, ๊ทธ๋ฆฌ๊ณ Vertical Spacing์ ์ ๋ ฅ๋ฐ์ ์ํคํ ์ฒ ๋ฒํผ๋ค์ ์ธ๋ก๋ก ์ ๋ ฌํ๋ ๋ฉ์๋์ ๋๋ค.
์ ์ฉ ํ ๋ชจ์ต
๊ทธ๋ผ ์ด๋ง ๐๐ป ๐๐ป ๐๐ป
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Swift ] UIProgressView์์ CornerRadius๋ฅผ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ (0) | 2022.09.20 |
---|---|
[ Swift ] UITextField์ ์ข์ฐ ํจ๋ฉ์ ์ฃผ๋ ๋ฐฉ๋ฒ (2) | 2022.09.19 |
[ Swift ] ๊ฐ๋จํ ํ ์คํธ ๋ฉ์ธ์ง ๊ตฌํํ๊ธฐ (feat.UILabel) (0) | 2022.09.16 |
[ Swift ] Realm์์ ๋ฐฐ์ด์ฌ์ฉํ๊ธฐ ( feat.List ) (0) | 2022.06.28 |
[ Swift ] ์ ๊ท์์ ์ฌ์ฉํด๋ณด์ ( UITextField, UITextView ) (0) | 2022.06.27 |