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を指定
}
}
