본문 바로가기
iOS - 실무관련/SwiftUI

Text

by print_soo 2022. 7. 14.

여러 Component들은 해당 Component의 텍스트를 작성하고 .(dot)으로 그 Component에 대한 속성을 작성해서 UI를 구현한다.

 

Text도 마찬가지로 아래와 같이 구현이 가능하다.

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .font(.system(size: 30))
            .fontWeight(.heavy)
            .foregroundColor(.green)
            .background(.orange)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

 

 

 

1. 폰트

[정해진 Font Font size]

  • title / title2 / title3 
  • caption / caption2
  • headline / subheadline
  • body
  • largeTitle
  • callout
// 사용예시
Text("Hello, world!")
            .font(.body)


[system]

  • system(size: ) - CGFloat를 입력해서 Font size 조절
  • system(_:design: ) - 정해진 Font size와 선택가능한 Font 디자인
  • system(_:style: ) - 정해진 Font
  • system(size:weight:design)- CGFloat를 입력해서 Font size 조절과 Font 굵기 조절, 선택가능한 Font 디자인
// 사용예시
Text("Hello, world!")
            .font(.system(size: 15))

 

[custom] 

  • custom(_:size: ) - Font 선택과 Font size 조절
  • custom(_:fixedSize: )- Font 선택과 고정된 Font size
  • custom(_:size:relativeTo: )- Font 선택과 Font size는 시작값 relativeTo의 값에 따라 크기는 동적으로 변경
// 사용예시
Text("Hello, world!")
            .font(.custom("글꼴", size: 15))

 

[FontWeight] - 폰트 굵기

  • thin
  • ultraLight
  • light
  • medium
  • regualr
  • black
  • semibold
  • bold
  • heavy
// 사용예시
Text("Hello, world!")
            .fontWeight(.bold)

 

 

 

2. 정렬

[multilineTextAlingment] - 정렬

  • center - 중앙 정렬
  • leading - 좌측 정렬
  • trailing - 우측 정렬
// 사용예시
Text("Hello, world!")
            .multilineTextAlignment(.trailing)

 

 

 

3. 글자 줄 제한 

[lineLimit]

  • lineLimit(nil) - 무제한. (즉, 글자 수가 제한 없는 Text가 된다.
  • lineLimit(0) - 1줄
  • lineLimit(1) - 1줄
  • lineLimit(2) - 2줄
  • ... - 숫자가 늘어날 수록 글자 줄은 늘어난다.
// 사용예시
Text("Hello, world!")
            .lineLimit(0)

 

 

 

4. padding

[padding]

    • top - 위
    • bottom - 아래
    • leading - 왼쪽
    • trailing - 오른쪽
    • all - 전부
    • vertical - 위, 아래
    • horizontal - 왼쪽, 오른쪽
// 사용예시
var body: some View {
        Text("Hello")
            .padding(.all, 100) // == .padding(100)
💡 padding은 중복이 가능하다. 즉, padding 안에 padding이 가능하다는 말이다. 

또한 중복된 padding은 다른 background 색을 넣을 수 있다. 

 

 

 

5. 둥굴게

cornerRadius() - 각을 둥글게 만듦.

// 사용예시
var body: some View {
        Text("Hello")
            .cornerRadius(20)

 

 

 

 

6. 행간과 자간

lineSpacing() - 글과 글의 간격 

// 사용예시
var body: some View {
        Text("Hello")
            .lineSpacing(20)

 

tracking() - 글자와 글자의 간격

// 사용예시
var body: some View {
        Text("Hello")
            .tracking(10)

 

 

 

8. 그림자

shadow(color: , radius: , x: , y: ) - color: 그림자 색, radius: 그림자의 선명도(숫자가 낮을 수록 선명함), x y: 그림자 좌표

// 사용예시
var body: some View {
        Text("Hello")
            .shadow(color: .green, radius: 1, x: 10, y: 12)

기대효과

 

 

 

 

9. truncationMode(글 짤림 설정)

  • head - 예시: 여러줄 ~ 마지막줄에서 ...byebyebyebyebye
  • middle - 예시: 여러줄 ~ 마지막줄에서 byebye...byebyebye
  • tail - 예시: 여러줄 ~ 마지막줄에서 byebyebyebyebye...

 

 

 

10. 문자 출력

[날짜출력]

struct ContentView: View {
    // 날짜 형식
    static let dateFormat: DateFormatter = {
        let formartter = DateFormatter()
        formartter.dateFormat = "YYYY년 MM월 dd일"
        return formartter
    }()
    //오늘의 날짜
    var today = Date()
    
    var body: some View {
        
        Text("오늘은 \(today, formatter: ContentView.dateFormat)")
 
            
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

 

 

[Bool 값 출력] - bool 값은 String으로 변환하고 출력해야한다.

import SwiftUI

struct ContentView: View {
    
    var torF = true
    
    var body: some View {
        
        Text("이건 \(String(torF))")
 
            
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

'iOS - 실무관련 > SwiftUI' 카테고리의 다른 글

Stack  (0) 2022.07.18
Set Image  (0) 2022.07.15
웹뷰 띄우기  (0) 2022.07.13
@Binding - 데이터 연동  (0) 2022.07.12
@State - 상태변화 감지  (0) 2022.07.12