SwiftUIのテキストビューは、長い文字数だった場合に、親ビューのサイズに合わせて自動的に改行を入れてくれる柔軟な機能を持っている。

例えば幅200のTextビューに、以下のような長いテキストが渡された場合、サイズに合わせて自動的に改行を入れてくれる。

import SwiftUI

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

ただし、文字数は可変であることが多く、それによってビューのサイズが大きく変わってしまうと不都合な場合がある。

そのような時は、今回紹介するlineLimitモディファイアを使って、文字数に関わらず表示する行数に制限をかけてしまうと良い。

lineLimitモディファイア

lineLimitモディファイアは引数に整数を取り、以下の例の場合は1を渡しているため、文字数に関わらず行数を1行に固定することができる。

import SwiftUI

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

また、省略された部分は自動的に3点リーダーに置換される。