SwiftUIのTextビューでは、文字数が長く親ビューのサイズを超える場合、以下のように自動的に収まりきらない文字が3点リーダーとして省略される。

例えば以下のような長い文字を幅200のフレーム、1行表示のビューに表示しようとすると、このようになる。

struct ContentView: View {
  var body: some View {
    Text("longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong")
      .frame(width: 200)
      .lineLimit(1)
  }
}

デフォルトでは文末が3点リーダーに変換されるのだが、今回はこの省略文字の位置を文頭、文中に変更する方法を紹介する。

truncationModeモディファイア

TextビューにtruncationModeモディファイアを適用することで、任意の位置に変更することができる。

文頭を省略する場合

struct ContentView: View {
  var body: some View {
    Text("longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong")
      .frame(width: 200)
      .lineLimit(1)
      .truncationMode(.head) // .headを指定
  }
}

文中を省略する場合

struct ContentView: View {
  var body: some View {
    Text("longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong")
      .frame(width: 200)
      .lineLimit(1)
      .truncationMode(.middle) // .middleを指定
  }
}

文末を省略する場合(デフォルト)

struct ContentView: View {
  var body: some View {
    Text("longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong")
      .frame(width: 200)
      .lineLimit(1)
      .truncationMode(.tail) // .tailを指定
  }
}