🦀

SwiftUIでTextを省略しないようにしたい

2022/01/29に公開
2

SwiftUIでTextを省略しないようにしたい。そのあたりを忘れるのでまとめておく。

lineLimitを使ってみる

Text("hogehogehogehogehogegehogehogehogehogehogehogegehogehogehogehogehogehogegehoge")
                .frame(width: 100, height: 100)
                .lineLimit(nil)


.lineLimitは表示行数を減らす役割みたい。

https://developer.apple.com/documentation/swiftui/text/linelimit(_:)

lineLimit(_:)を指定しても行数を増やして全体を綺麗に表示できるわけではない。
逆にlineLimit(2)と指定するとこのように行数が減って、表示行数を減らしてくれる。

ただ、今回のケースではlineLimitだとうまくいかない。

fixedSize()を使う

省略したくないときにはfixedSize()を使うといいらしい。

https://developer.apple.com/documentation/swiftui/view/fixedsize()

そうすると綺麗に表示することができるとのこと。

horizontal:true かつ vertical:false

Text("hogehogehogehogehogegehogehogehogehogehogehogegehogehogehogehogehogehogegehoge")
                .fixedSize(horizontal: true, vertical: false)
                .frame(width: 100, height: 100)
                .border(Color.red, width: 1)

horizontal:false かつ verticalをtrue

Text("hogehogehogehogehogegehogehogehogehogehogehogegehogehogehogehogehogehogegehoge")
                .fixedSize(horizontal: false, vertical: true)
                .frame(width: 100, height: 100)
                .border(Color.red, width: 1)

もし.fixedSize(horizontal: true, vertical: true)だと.fixedSize(horizontal: true, vertical: false)にした時と同じ挙動になりました。

今回自分は横方向に許可したかったのでverticalをtrueにして期待通りの描写を得られたので良かったです。

参考

https://qiita.com/Riscait/items/4c6d7f243524502b8ccd
https://stackoverflow.com/questions/56482955/adding-unlimited-lines-in-a-text-swiftui

Discussion

みはるんみはるん

とても役に立ちました!記事ありがとうございます。
些細なことで恐縮ですが、誤字かなと思い一応ご報告します。
見出しの verticalをfalse について、コードを正とすると、 verticalをtrue または horizontalをfalse が適切ぽいです。

coffmarkcoffmark

ご連絡ありがとうございます。修正が遅くなり申し訳ありません。
先ほど修正しました 🙇‍♂️