๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[SwiftUI] Text

by hyebin (Helia) 2024. 4. 18.
๋ฐ˜์‘ํ˜•

Text

A view that displays one or more lines of read-only text

ํ•œ ์ค„ ์ด์ƒ์˜ ์ฝ๊ธฐ ์ „์šฉ text๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ทฐ์ž…๋‹ˆ๋‹คText ๋ทฐ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— ํ‘œ์‹œํ•  ํ…์ŠคํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, SwiftUI!")
    }
}

 

ํ…์ŠคํŠธ ์Šคํƒ€์ผ ์ ์šฉํ•˜๊ธฐ

.font()๋ฅผ ์‚ฌ์šฉํ•ด ํ…์ŠคํŠธ์˜ ๊ธ€๊ผด ํฌ๊ธฐ์™€ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Text("Hello, SwiftUI!")
	.font(.title)

.title, .caption ๋“ฑ ์‚ฌ์ „์— ์ •์˜๋œ ํ…์ŠคํŠธ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Text("Hello, SwiftUI!")
	.font(.system(size: 20, weight: .bold))

system font๋ฅผ ์‚ฌ์šฉํ•ด ํฌ๊ธฐ์™€ ๊ตต๊ธฐ๋ฅผ ์ง€์ •ํ•ด ์Šคํƒ€์ผ์„ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Text("Hello, SwiftUI!")
	.font(.custom("YourCustomFontName", size: 20))

ํฐํŠธ ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • ํฐํŠธ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

VStack(spacing: 30) {
    Text("Hello\n SwiftUI!")
        .lineSpacing(20)


    Text("Hello\n SwiftUI!")
        .lineSpacing(10)

    Text("Hello\n SwiftUI!")
        .lineSpacing(0)
}

lineSpacing์€ ํ…์ŠคํŠธ์˜ ์ค„ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ์˜ ๊ฐ ์ค„ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

VStack(spacing: 30) {
    Text("Hello SwiftUI!")
        .kerning(2)


    Text("Hello SwiftUI!")
        .kerning(0)

    Text("Hello SwiftUI!")
        .kerning(-2)
}
VStack(spacing: 30) {
    Text("Hello SwiftUI!")
        .tracking(2)


    Text("Hello SwiftUI!")
        .tracking(0)

    Text("Hello SwiftUI!")
        .tracking(-2)
}

kerning๊ณผ tracking์„ ์‚ฌ์šฉํ•ด ๊ธ€์ž ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • kerning์€ ํฐํŠธ ์ข…๋ฅ˜์— ์˜์กด์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ๊ฐ ํฐํŠธ๊ฐ€ ๊ฐ€์ง„ ํŠน์„ฑ์— ๋”ฐ๋ผ ๊ธ€์ž ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋”ฐ์ ธ ๊ธ€์ž ๊ฐ„๊ฒฉ์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • tracking์€ ํฐํŠธ ์ข…๋ฅ˜์™€ ๊ด€๊ณ„์—†์ด ๊ฐ ๊ธ€์ž ์ƒ์˜ ๊ฐ„๊ฒฉ์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • ํ•œ ๊ฐœ์˜ TextView์— kerning, tracking์ด ๋ชจ๋‘ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ tracking์„ ์šฐ์„ ์‹œํ•˜๊ณ , kerning์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.
Text("Hello, SwiftUI!")
	.foregroundColor(.blue)

foregroundColor๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ์˜ ์ƒ‰์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์—ฌ๋Ÿฌ ์ค„์˜ ํ…์ŠคํŠธ ํ‘œ์‹œํ•˜๊ธฐ

VStack(spacing: 30) {
    Text("Hello\nSwiftUI!\nhello\nswiftUI!")
        .lineLimit(2)
}

lineLimit๋ฅผ ์‚ฌ์šฉํ•ด ํ‘œํ˜„๋˜๋Š” ์ค„ ์ˆ˜์˜ ์ œํ•œ์„ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œํ•œ๋œ ์ค„ ์ˆ˜ ๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ํ…์ŠคํŠธ๋Š” ์ž˜๋ฆฝ๋‹ˆ๋‹ค.

lineLimit๋ฅผ nil๋กœ ํ•˜๋ฉด ์ค„ ์ˆ˜ ์ œํ•œ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 VStack(spacing: 30) {
    Text("abcdefghig")
        .lineLimit(1)
        .truncationMode(.head)

    Text("abcdefghig")
        .lineLimit(1)
        .truncationMode(.middle)

    Text("abcdefghig")
        .lineLimit(1)
        .truncationMode(.tail)
}
.frame(width: 50)

truncationMode๋ฅผ ์‚ฌ์šฉํ•ด ์›ํ•˜๋Š” ์œ„์น˜์˜ Text๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

VStack(spacing: 30) {
    Text("Hello, SwiftUI!\nWelcome to SwiftUI world!")
        .multilineTextAlignment(.center)

    Text("Hello, SwiftUI!\nWelcome to SwiftUI world!")
        .multilineTextAlignment(.leading)

    Text("Hello, SwiftUI!\nWelcome to SwiftUI world!")
        .multilineTextAlignment(.trailing)
}

multilineTextAlignment๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ค„์˜ ํ…์Šค๋ฅผ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋™์ ์ธ ํ…์ŠคํŠธ ํ‘œ์‹œํ•˜๊ธฐ

struct ContentView: View {
    @State private var name = "SwiftUI"

    var body: some View {
        Text("Hello, \(name)!")
            .font(.title)
            .foregroundColor(.blue)
    }
}

@State ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ฅผ ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋ฐ˜์‘ํ˜•

'๐ŸŽ iOS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[RxSwift] Observable  (0) 2024.06.07
[RxSwift] RxSwift๋ž€?  (0) 2024.06.03
[SwiftUI] Stack (VStack/HStack/ZStack)  (0) 2024.04.08
[SwiftUI] Property Wrappers  (0) 2024.04.04
[๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ] ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€?  (0) 2023.09.18