๐Ÿ“ฑ [SwiftUI] Text: ํ…์ŠคํŠธ ๋ Œ๋”๋ง๊ณผ ์Šคํƒ€์ผ๋ง

์ด์„œยท2023๋…„ 9์›” 26์ผ
0

๐Ÿ“ฑ SwiftUI ํŠธ๋ž™

๋ชฉ๋ก ๋ณด๊ธฐ
1/7

๐ŸŽ๏ธ๐Ÿ’จย ์•ˆ๋…•ํ•˜์„ธ์š” ์ด์„œ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” SwfitUI์˜ Text ๋ทฐ(View)์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…ํ•˜๋ ค ํ•ด์š”.

๊ฐœ์š”

SwiftUI์—์„œ Text๋Š” ํ…์ŠคํŠธ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๋ทฐ(view)์—์š”. Text ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)์— ํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์„œ์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. Text ๋ทฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

  1. ํ…์ŠคํŠธ ํ‘œ์‹œ: Text ๋ทฐ๋Š” ํ™”๋ฉด์— ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์š”. ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋‚ ์งœ ๋˜๋Š” ๋‹ค๋ฅธ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์–ด์š”.
  2. ํ…์ŠคํŠธ ์Šคํƒ€์ผ๋ง: Text ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ์— ์„œ์‹๊ณผ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๋ฅผ ํ†ตํ•ด ๊ธ€๊ผด, ๊ธ€์ž ํฌ๊ธฐ, ์ƒ‰์ƒ, ์Šคํƒ€์ผ ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ…์ŠคํŠธ๋ฅผ ๊ตต๊ฒŒ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ƒ‰์ƒ์œผ๋กœ ๊ฐ•์กฐํ•  ์ˆ˜ ์žˆ์–ด์š”.
  3. ํ…์ŠคํŠธ ๋ ˆ์ด์•„์›ƒ ๋ฐ ์ •๋ ฌ: Text ๋ทฐ๋Š” ํ…์ŠคํŠธ์˜ ๋ ˆ์ด์•„์›ƒ๊ณผ ์ •๋ ฌ์„ ์ œ์–ดํ•˜๋Š” ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉํ•ด์š”. ํ…์ŠคํŠธ๋ฅผ ์ค‘์•™ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์ค„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์–ด์š”.

Text ๋ทฐ๋Š” SwiftUI์—์„œ ํ…์ŠคํŠธ ๊ด€๋ จ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ…์ŠคํŠธ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์Šคํƒ€์ผ๋งํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ด์š”.

ํ…์ŠคํŠธ ๋ Œ๋”๋ง

Text ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์ด์—์š”.

import SwiftUI

struct TextBasic: View {
	var body: some View {
		Text("์‚ก์‚ก ๋น„์ผœ์ฃผ์„ธ์š”๐ŸŽ๏ธ")
	}
}

#Preview {
    TextBasic()
}

ํ…์ŠคํŠธ ์Šคํƒ€์ผ๋ง

font(_:) ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ…์ŠคํŠธ์˜ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์€ Font Struct์—์š”. Font์— Extension์œผ๋กœ ์‚ฌ์ „์— ์ •์˜๋œ ์Šคํƒ€์ผ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

์‚ฌ์ „ ์ •์˜๋œ ์Šคํƒ€์ผ

SwiftUI์—์„œ๋Š” ์‚ฌ์ „ ์ •์˜๋œ ํ…์ŠคํŠธ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ์˜ ์„œ์‹์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์‚ฌ์ „ ์ •์˜๋œ ์Šคํƒ€์ผ์€ ๋‹ค์–‘ํ•œ ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ๊ธ€๊ผด ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํŠน์ • ํ…์ŠคํŠธ ์š”์†Œ์— ์ ํ•ฉํ•œ ์„œ์‹์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์š”. ์ด๋Ÿฌํ•œ ์Šคํƒ€์ผ๋“ค์€ ์ฃผ๋กœ iOS, macOS, watchOS ๋“ฑ์˜ Apple ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํ”Œ๋žซํผ ๊ฐ„ ์ผ๊ด€์„ฑ์„ ์ œ๊ณตํ•ด์š”.

import SwiftUI

struct TextBasic: View {
    var body: some View {
        VStack(alignment: .leading, spacing: 20) {
            Text(".largeTitle").font(.largeTitle)
            Text(".title").font(.title)
            Text(".title2").font(.title2)
            Text(".headline").font(.headline)
            Text(".subheadline").font(.subheadline)
            Text(".body").font(.body)
            Text(".callout").font(.callout)
            Text(".footnote").font(.footnote)
            Text(".caption").font(.caption)
            Text(".caption2").font(.caption2)
        }
    }
}

#Preview {
    TextBasic()
}
  1. .largeTitle
    • ์ฃผ๋กœ ํฐ ํ—ค๋” ๋˜๋Š” ํƒ€์ดํ‹€ ํ…์ŠคํŠธ์— ์‚ฌ์šฉํ•ด์š”.
    • ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ๊ตต๊ธฐ๊ฐ€ ํฌ๋ฉฐ, ํ™”๋ฉด ์ƒ๋‹จ์— ์ฃผ๋กœ ํ‘œ์‹œ๋ผ์š”.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์•ฑ์˜ ์ œ๋ชฉ์ด๋‚˜ ์ฃผ์š” ์„น์…˜์˜ ํƒ€์ดํ‹€์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
  2. .title
    • ์ค‘์š”ํ•œ ์„น์…˜์˜ ํƒ€์ดํ‹€์ด๋‚˜ ํฐ ์ œ๋ชฉ์— ์ ํ•ฉํ•ด์š”.
    • ํฐ ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ์ค‘๊ฐ„ ์ •๋„์˜ ๊ตต๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ œ๋ชฉ ํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•ด์š”.
  3. .title2
    • ์ค‘์š”์„ฑ์ด ๋‚ฎ์€ ์ œ๋ชฉ์ด๋‚˜ ์„น์…˜์˜ ๋ถ€์ œ๋ชฉ์— ์‚ฌ์šฉํ•ด์š”.
    • ๋” ์ž‘์€ ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ์ค‘๊ฐ„ ์ •๋„์˜ ๊ตต๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ถ€์ œ๋ชฉ ํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•ด์š”.
  4. .headline
    • ์„น์…˜ ์ œ๋ชฉ, ๋‰ด์Šค ๊ธฐ์‚ฌ ์ œ๋ชฉ ๋“ฑ์— ์ ํ•ฉํ•ด์š”.
    • ์ค‘๊ฐ„ ํฌ๊ธฐ์˜ ํ…์ŠคํŠธ์™€ ์ค‘๊ฐ„ ์ •๋„์˜ ๊ตต๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ค‘์š”ํ•œ ์ œ๋ชฉ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์š”.
  5. .subheadline
    • ๋ถ€์ œ๋ชฉ์ด๋‚˜ ๊ธด ์„ค๋ช…์— ์ ํ•ฉํ•ด์š”.
    • ์ž‘์€ ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ์ค‘๊ฐ„ ์ •๋„์˜ ๊ตต๊ธฐ๋ฅผ ๊ฐ€์ ธ์š”.
  6. .body
    • ์ผ๋ฐ˜์ ์ธ ํ…์ŠคํŠธ ๋‚ด์šฉ์— ์‚ฌ์šฉํ•ด์š”.
    • ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ๊ตต๊ธฐ๊ฐ€ ๋ณดํ†ต ํฌ๊ธฐ๋กœ, ๋ณธ๋ฌธ ํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•ด์š”.
  7. .callout
    • ๊ฐ•์กฐํ•ด์•ผ ํ•˜๋Š” ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…์ŠคํŠธ์— ์‚ฌ์šฉํ•ด์š”.
    • ์ž‘์€ ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ์ค‘๊ฐ„ ์ •๋„์˜ ๊ตต๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ฃผ๋กœ ์ถ”๊ฐ€ ์„ค๋ช… ๋˜๋Š” ์ฃผ์˜์‚ฌํ•ญ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์š”.
  8. .footnote
    • ์ฃผ์„์ด๋‚˜ ์ž‘์€ ํ…์ŠคํŠธ ์„ค๋ช…์— ์‚ฌ์šฉํ•ด์š”.
    • ์ž‘์€ ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ์ค‘๊ฐ„ ์ •๋„์˜ ๊ตต๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ฐธ๊ณ ์‚ฌํ•ญ ๋˜๋Š” ์ž‘์€ ํ…์ŠคํŠธ ์„ค๋ช…์— ์‚ฌ์šฉํ•ด์š”.
  9. .caption
    • ์ด๋ฏธ์ง€ ์บก์…˜ ๋˜๋Š” ์ž‘์€ ๋ ˆ์ด๋ธ”์— ์‚ฌ์šฉํ•ด์š”.
    • ๊ฐ€์žฅ ์ž‘์€ ํ…์ŠคํŠธ ํฌ๊ธฐ์™€ ์ค‘๊ฐ„ ์ •๋„์˜ ๊ตต๊ธฐ๋ฅผ ๊ฐ€์ ธ์š”.

์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์ •์˜๋œ ํ…์ŠคํŠธ ์Šคํƒ€์ผ์€ ํ…์ŠคํŠธ์˜ ์˜๋ฏธ์™€ ์—ญํ• ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์„œ์‹์„ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€์„ ์ค˜์š”. SwiftUI๋Š” ๊ฐ ํ”Œ๋žซํผ์— ๋งž๋Š” ๊ธฐ๋ณธ ์Šคํƒ€์ผ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ํ…์ŠคํŠธ ์Šคํƒ€์ผ์„ ์ˆ˜๋™์œผ๋กœ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์š”!(๋„ˆ๋ฌด ํŽธ๋ฆฌํ•ด์š”๐Ÿ˜†) ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์ •์˜๋œ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…์ŠคํŠธ๊ฐ€ ํ•ด๋‹น ํ”Œ๋žซํผ์—์„œ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๋ณด์—ฌ์š”.

์‹œ์Šคํ…œ ๊ธ€๊ผด

Text(".system").font(.system(size: 20))
Text(".system").font(.system(size: 20, weight: .bold))
Text(".system").font(.system(size: 20, weight: .bold, design: .rounded))

.system์€ SwiftUI์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ…์ŠคํŠธ ์Šคํƒ€์ผ ์ค‘ ํ•˜๋‚˜๋กœ, ์‹œ์Šคํ…œ ๊ธ€๊ผด๊ณผ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์š”. ์ด ์Šคํƒ€์ผ์€ iOS, macOS, watchOS ๋“ฑ์˜ Apple ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๊ธ€๊ผด์„ ๋‚˜ํƒ€๋‚ด์š”.

.system ํ…์ŠคํŠธ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…์ŠคํŠธ ํฌ๊ธฐ, ๊ตต๊ธฐ ๋ฐ ๊ธ€๊ผด ๋””์ž์ธ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ํ…์ŠคํŠธ๋ฅผ .system(size: 20, weight: .bold, design: .default)๋กœ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ํ…์ŠคํŠธ๋Š” ํฌ๊ธฐ 20์˜ ๋ณผ๋“œ(Bold) ๊ธ€๊ผด๋กœ ๋ Œ๋”๋ง๋ผ์š”.

์‹œ์Šคํ…œ ๊ธ€๊ผด ์‚ฌ์šฉ ์‹œ ์ด์ :

  1. ํ”Œ๋žซํผ ์ผ๊ด€์„ฑ: .system์€ ๊ฐ ํ”Œ๋žซํผ์— ๋งž๋Š” ์‹œ์Šคํ…œ ๊ธ€๊ผด์„ ์ž๋™์œผ๋กœ ์„ ํƒํ•˜์—ฌ ์ผ๊ด€๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ด์š”. ์ด๋Š” ํŠน์ • ํ”Œ๋žซํผ์— ๊ณ ์ •๋œ ์‚ฌ์ „ ์ •์˜๋œ ํฐํŠธ์™€๋Š” ๋‹ฌ๋ฆฌ ์‚ฌ์šฉ์ž์˜ ํ™˜๊ฒฝ ์„ค์ •์— ๋งž๊ฒŒ ๋™์ ์œผ๋กœ ์กฐ์ •๋ผ์š”.
  2. ๊ธ€๊ผด ์—…๋ฐ์ดํŠธ: ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธ€๊ผด ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ๋•Œ, .system์„ ์‚ฌ์šฉํ•˜๋Š” ํ…์ŠคํŠธ๋Š” ์ž๋™์œผ๋กœ ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ ๊ธ€๊ผด๊ณผ ํฌ๊ธฐ์— ๋งž์ถฐ ์—…๋ฐ์ดํŠธํ•ด์š”. ๋ฐ˜๋ฉด์— ์‚ฌ์ „ ์ •์˜๋œ ํฐํŠธ๋Š” ์ˆ˜๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ด์š”.
  3. ์‚ฌ์šฉ์ž ์นœํ™”์„ฑ: .system์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ์  ๋ ˆ์ด์•„์›ƒ ์™ธ์—๋„ ์‚ฌ์šฉ์ž์˜ ๊ธ€๊ผด ํฌ๊ธฐ ์„ค์ •์„ ์กด์ค‘ํ•  ์ˆ˜ ์žˆ์–ด์š”.

.system ์Šคํƒ€์ผ์€ ์ฃผ๋กœ ์‹œ์Šคํ…œ๊ณผ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ํŠน์ • ํ”Œ๋žซํผ์—์„œ ๊ณ ์ •๋œ ํฐํŠธ๋ณด๋‹ค ๋” ๋™์ ์ด๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์š”.

ํ…์ŠคํŠธ ์ •๋ ฌ ๋ฐ ๊ฐ„๊ฒฉ ๊ทธ๋ฆฌ๊ณ  ๋ ˆ์ด์•„์›ƒ

  1. ๋ฉ€ํ‹ฐ ๋ผ์ธ ํ…์ŠคํŠธ ์ •๋ ฌ

    • ๋ฉ€ํ‹ฐ ๋ผ์ธ ํ…์ŠคํŠธ ์ •๋ ฌ์€ multilineTextAlignment(_ alignment: TextAlignment) ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์–ด์š”.
    • .leading: ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌํ•ด์š”.
    • .center: ๊ฐ€์šด๋ฐ๋กœ ์ •๋ ฌํ•ด์š”.
    • .trailing: ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ •๋ ฌํ•ด์š”.
    import SwiftUI
    
    struct Alignment: View {
        var body: some View {
            VStack(alignment: .leading, spacing: 20) {
                Text(".leading .leading .leading .leading .leading .leading .leading .leading .leading .leading .leading .leading .leading .leading .leading .leading ")
                    .multilineTextAlignment(.leading)
                
                Text(".center .center .center .center .center .center .center .center .center .center .center .center .center .center .center .center .center .center ")
                    .multilineTextAlignment(.center)
                            
                Text(".trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing .trailing ")
                    .multilineTextAlignment(.trailing)
            }
            .padding(30)
        }
    }
    
    #Preview {
        Alignment()
    }
  1. ํ…์ŠคํŠธ ์ค„ ๊ฐ„๊ฒฉ ๋ฐ ๊ธ€์ž ๊ฐ„๊ฒฉ ์กฐ์ ˆ

    • lineSpacing(_ lineSpacing: CGFloat): ์ค„ ๊ฐ„๊ฒฉ์„ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์–ด์š”.
    • tracking(_ tracking: CGFloat): ๊ธ€์ž ๊ฐ„๊ฒฉ์„ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์–ด์š”.
    Text("๐ŸŽ๏ธ ์‚ก์‚ก")
        .lineSpacing(10) // ์ค„ ๊ฐ„๊ฒฉ ์กฐ์ ˆ
        .tracking(2.0)   // ๊ธ€์ž ๊ฐ„๊ฒฉ ์กฐ์ ˆ
  2. ํ…์ŠคํŠธ ๋ทฐ์˜ ํ”„๋ ˆ์ž„ ์ œํ•œ

    • frame(minWidth: CGFloat? = nil, idealWidth: CGFloat? = nil, maxWidth: CGFloat? = nil, minHeight: CGFloat? = nil, idealHeight: CGFloat? = nil, maxHeight: CGFloat? = nil, alignment: Alignment = .center)
    • frame(width: CGFloat? = nil, height: CGFloat? = nil, alignment: Alignment = .center) : ํ…์ŠคํŠธ ๋ทฐ์˜ ํ”„๋ ˆ์ž„์„ ์ œํ•œํ•˜๊ณ  ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.
    Text("์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก ์‚ก์‚ก")
        .frame(width: 150) // ๊ฐ€๋กœ ํฌ๊ธฐ ์ œํ•œ
  3. ํ…์ŠคํŠธ ์ตœ๋Œ€ ๋ผ์ธ ๋ฐ ์ƒ๋žต ํ‘œ์‹œ

    • lineLimit: ํ…์ŠคํŠธ์˜ ์ตœ๋Œ€ ๋ผ์ธ ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ๋Œ€ ๋ผ์ธ์„ ์ดˆ๊ณผํ•˜๊ฒŒ ๋˜๋ฉด โ€ฆ ์œผ๋กœ ํ‘œ์‹œ๋ผ์š”.
    • truncationMode(_ mode: Text.TruncationMode): ํ…์ŠคํŠธ ๋ทฐ์˜ ํ”„๋ ˆ์ž„์„ ๋ฒ—์–ด๋‚  ๋•Œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ด์š”.
    import SwiftUI
    
    struct LineLimit: View {
        var body: some View {
            VStack(spacing: 40) {
                Text("์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. Hello World. ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ์•„์ž์ฐจ์นดํƒ€ํŒŒํ•˜ abcdefghijklnmopqrstuvwxyz")
                
                Text("์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. Hello World. ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ์•„์ž์ฐจ์นดํƒ€ํŒŒํ•˜ abcdefghijklnmopqrstuvwxyz")
                    .lineLimit(1)
    
                Text("์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. Hello World. ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ์•„์ž์ฐจ์นดํƒ€ํŒŒํ•˜ abcdefghijklnmopqrstuvwxyz")
                    .lineLimit(1)
                    .truncationMode(.head)
                
                Text("์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. Hello World. ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ์•„์ž์ฐจ์นดํƒ€ํŒŒํ•˜ abcdefghijklnmopqrstuvwxyz")
                    .lineLimit(1)
                    .truncationMode(.middle)
                
                Text("์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. Hello World. ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ์•„์ž์ฐจ์นดํƒ€ํŒŒํ•˜ abcdefghijklnmopqrstuvwxyz")
                    .lineLimit(1)
                    .truncationMode(.tail)
            }
        }
    }
    
    #Preview {
        LineLimit()
    }

๋งˆ๋ฌด๋ฆฌ

SwiftUI์˜ Text ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์–ด์š”. ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด SwiftUI์˜ ๋‹ค๋ฅธ ๋ทฐ ๋ฐ ๊ธฐ๋Šฅ๊ณผ ์กฐํ•ฉํ•˜์—ฌ ํ’๋ถ€ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ์„ ๊ธฐ๋Œ€ํ•ด์š”. SwiftUI๋ฅผ ํ†ตํ•ด ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์—์„œ Text ๋ทฐ์˜ ํ™œ์šฉ์„ ํ†ตํ•ด ๋”์šฑ ํ’๋ถ€ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธธ ๋ฐ”๋ผ์š”.๐Ÿ˜†

profile
๐ŸŽ๏ธ๐Ÿ’จ Beep Beep

0๊ฐœ์˜ ๋Œ“๊ธ€