πŸ“± [SwiftUI] Padding: μ—¬λ°± μ„€μ •

μ΄μ„œΒ·2023λ…„ 10μ›” 23일
1

πŸ“± SwiftUI νŠΈλž™

λͺ©λ‘ 보기
7/7

μ•ˆλ…•ν•˜μ„Έμš” μ΄μ„œμ˜ˆμš”, 이번 μ‹œκ°„μ—λŠ” νŒ¨λ”©(padding)에 λŒ€ν•΄ ν¬μŠ€νŒ…ν•˜λ € ν•΄μš”!

κ°œμš”

.padding은 뷰의 μ£Όμœ„μ— 여백을 μΆ”κ°€ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” μˆ˜μ •μž(modifier)μ˜ˆμš”. νŒ¨λ”©μ„ 톡해 뷰의 λ‚΄μš©κ³Ό 경계 사이에 여백을 μ„€μ •ν•  수 μžˆμ–΄, λ ˆμ΄μ•„μ›ƒμ„ 보닀 μ •ν™•ν•˜κ²Œ μ‘°μ •ν•  수 μžˆμ–΄μš”.

μ‚¬μš©λ²•

padding μˆ˜μ •μžλ₯Ό μ‚¬μš©ν•˜λŠ” κ°€μž₯ 기본적인 방법은 λ‹€μŒκ³Ό κ°™μ•„μš”.

Text("μ½”λ“œλ ˆμ΄μ„œ").padding()

.padding()을 톡해 ν…μŠ€νŠΈ λ·° μ£Όμœ„μ— μ•½κ°„μ˜ 여백이 μ μš©λΌμš”. μœ„μ™€ 같이 인자λ₯Ό 아무 것도 주지 μ•Šμ„ κ²½μš°μ—λŠ” ν”Œλž«νΌλ³„μ— 따라 μ‘°κΈˆμ”© λ‹€λ₯Ό 수 μžˆμ–΄μš”.

아무 인자λ₯Ό 넣어주지 μ•Šμ•˜μ§€λ§Œ νŒ¨λ”©μ΄ μ„€μ •λœ 것을 확인할 수 μžˆμ–΄μš”!

padding μˆ˜μ •μžκ°€ λ°›λŠ” λ§€κ°œλ³€μˆ˜μ— λŒ€ν•΄μ„œ μ‚΄νŽ΄λ³Όκ²Œμš”!

padding μˆ˜μ •μžλŠ” edges와 length λ§€κ°œλ³€μˆ˜λ₯Ό 가지고 μžˆμ–΄μš”.

  1. **edges**: 뷰에 λŒ€ν•΄ 여백을 μΆ”κ°€ν•  κ°€μž₯자리의 μ§‘ν•©μ΄μ—μš”. 기본값은 Edge μ—΄κ±°ν˜•(enum) μ•ˆμ— 쀑첩 νƒ€μž…(Nested Type)으둜 μ‘΄μž¬ν•˜λŠ” Set ꡬ쑰체(struct)의 μ „μ—­ ν”„λ‘œνΌν‹°μΈ all을 κ°€μ Έμš”.
  2. **length**: 뷰에 μ§€μ •ν•œ κ°€μž₯μžλ¦¬μ—μ„œ 여백을 μΆ”κ°€ν•˜λŠ” μ–‘(포인트)μ—μš”. 기본값은 nil둜 아무 인자λ₯Ό λ„˜κ²¨μ£Όμ§€ μ•ŠμœΌλ©΄, SwiftUIλŠ” ν”Œλž«νΌλ³„ κΈ°λ³Έ 양을 μ‚¬μš©ν•΄μš”.
// edgesλŠ” κΈ°λ³Έκ°’(.all)을 가지고 있기 떄문에 μƒλž΅μ΄ κ°€λŠ₯ν•˜κ³ ,
// lengthλ˜ν•œ Optional νƒ€μž…μœΌλ‘œ μƒλž΅μ΄ κ°€λŠ₯ν•΄μš”.

// edges와 length λͺ¨λ‘ μƒλž΅
Text("μ½”λ“œλ ˆμ΄μ„œ").padding()

// edges만 μƒλž΅
Text("μ½”λ“œλ ˆμ΄μ„œ").padding(10)

// length만 μƒλž΅
Text("μ½”λ“œλ ˆμ΄μ„œ").padding(.top)

// edges와 length λͺ¨λ‘ λͺ…μ‹œ
Text("μ½”λ“œλ ˆμ΄μ„œ").padding(.leading, 30)

νŒ¨λ”© λ°©ν–₯ μ„€μ •: Edge.Set

  1. **top**: 상단에 여백을 μΆ”κ°€ν•΄μš”.
  2. **leading**: μ™Όμͺ½μ— 여백을 μΆ”κ°€ν•΄μš”.
  3. **bottom**: ν•˜λ‹¨μ— 여백을 μΆ”κ°€ν•΄μš”.
  4. **trailing**: 였λ₯Έμͺ½μ— 여백을 μΆ”κ°€ν•΄μš”.
  5. all: λͺ¨λ“  κ°€μž₯μžλ¦¬μ— 여백을 μΆ”κ°€ν•΄μš”.
  6. horizontal: μ™Όμͺ½κ³Ό 였λ₯Έμͺ½μ— 여백을 μΆ”κ°€ν•΄μš”.
  7. vertical: 상단과 ν•˜λ‹¨μ— 여백을 μΆ”κ°€ν•΄μš”.

닀쀑 νŒ¨λ”© μ£ΌκΈ°

νŒ¨λ”© μˆ˜μ •μžλ₯Ό 톡해 겹겹이 νŒ¨λ”©μ„ 쀄 μˆ˜λ„ μžˆμ–΄μš”. λ”°λΌμ„œ νŒ¨λ”©μ„ μ£Όκ³ λ‚œ 이후에 λ‹€μ‹œ νŒ¨λ”©μ„ μ£Όλ©΄, 첫 번째 νŒ¨λ”©μ΄ 적용된 이후 μƒˆλ‘œμš΄ λ·°κ°€ λ°˜ν™˜λ˜κ³  μƒˆλ‘œ λ°˜ν™˜ 된 뷰에 νŒ¨λ”©μ„ μ£ΌλŠ” ν˜•μ‹μ΄ λΌμš”.

μ•„λž˜ μ½”λ“œμ™€ 그림을 ν•¨κ»˜ λ³΄μ‹œλ©΄ μ‰½κ²Œ μ΄ν•΄ν•˜μ‹€ 수 μžˆμœΌμ‹€ κ±°μ˜ˆμš”!

Text("μ½”λ“œλ ˆμ΄μ„œ")
	.padding() // (1)
	.foregroundColor(.white) // (2)
	.background(.blue) // (3)
	.padding(.horizontal) // (4)
	.background(.green) // (5)
	.padding(.vertical) // (6)
	.background(.yellow) // (7)
  1. Text에 첫 padding을 μ£Όμ—ˆμ–΄μš”.
  2. κΈ€μžμƒ‰μ„ white둜 μ„€μ •ν–ˆμ–΄μš”.
  3. 배경색을 νŒŒλž‘μƒ‰μœΌλ‘œ μ„€μ •ν–ˆμ–΄μš”. 이 λ•Œ μ€‘μš”ν•œ 점은 (1)λ²ˆμ—μ„œ padding을 μ£Όκ³  λ‚œ 이후 배경색을 μ„€μ •ν–ˆλ‹€λŠ” μ μ΄μ—μš”. 이둜 인해 1번 padding 만큼의 배경색이 μ§€μ •λ˜μ—ˆμ–΄μš”.
  4. μˆ˜ν‰(쒌우)둜 νŒ¨λ”©μ„ μ£Όμ—ˆμ–΄μš”.
  5. 배경색을 green으둜 μ„€μ •ν–ˆμ–΄μš”. μˆ˜μ •μž(modifier)λŠ” μ§€κΈˆκΉŒμ§€μ˜ Viewλ₯Ό λ°”νƒ•μœΌλ‘œ μ μš©ν•˜κΈ° λ•Œλ¬Έμ—, μœ„μ—μ„œ μ μš©ν•œ μˆ˜μ •μ‚¬ν•­μ„ λ°”νƒ•μœΌλ‘œ 4번의 μˆ˜ν‰ padding 만큼 배경색을 green으둜 μ„€μ •ν•΄μš”.
  6. μ΄λ²ˆμ—λŠ” 수직(μœ„μ•„λž˜)둜 padding을 μ£Όμ—ˆμ–΄μš”.
  7. λ‹€μ‹œ 1-6κΉŒμ§€μ˜ μˆ˜μ •μ‚¬ν•­μ„ λ°”νƒ•μœΌλ‘œ 6λ²ˆμ—μ„œ 적용된 padding 만큼 배경색을 yello둜 μ„€μ •ν•΄μš”.

마무리

μ§€κΈˆκΉŒμ§€ νŒ¨λ”©μ— λŒ€ν•΄μ„œ λ‹€λ£¨μ–΄λ³΄μ•˜μ–΄μš”. νŒ¨λ”©μ€ λ””μžμΈ λ ˆμ΄μ•„μ›ƒμ„ μž‘λŠ”λ° 맀우 자주 ν™œμš©λ˜λ‹ˆ 이번 포슀트λ₯Ό ν†΅ν•΄μ„œ λŠ₯μˆ™ν•˜κ²Œ ν™œμš©ν•  수 μžˆκ²Œλ˜μ—ˆμœΌλ©΄ μ’‹κ² μ–΄μš” πŸ˜†!

profile
πŸŽοΈπŸ’¨ Beep Beep

0개의 λŒ“κΈ€