LoginSignup
1
1

【SwiftUI】iOS16から使えるlineLimitのreservesSpaceが地味に便利

Posted at

はじめに

iOS16からlineLimitに新たな引数が指定できるようになりました。
reservesSpaceです。

reservesSpaceで何が変わる?

スクリーンショット 2023-12-24 23.18.29.png

reservesSpacetrueを指定すると想定される行数分のスペースを確保してくれます。
今回でいうと3行に満たないTextでも3行分のスペースを用意してくれているのがわかります。

一方、reservesSpacefalseを指定している方はTextに行数分のスペースしか与えられていません。

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(spacing: 30) {
            Text("短い文")
                .lineLimit(3, reservesSpace: true)
                .background(.yellow)

            Text("短い文")
                .lineLimit(3, reservesSpace: false)
                .background(.yellow)
        }
        .frame(width: 200)
        .padding(10)
        .background(.red)
    }
}

長い文はどちらも変わらない

スクリーンショット 2023-12-24 23.25.15.png

3行以上の文ではreservesSpaceにどちらを指定しても見た目は変わりません。

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(spacing: 30) {
            Text("短い文\n(reservesSpace: true)")
                .lineLimit(3, reservesSpace: true)
                .background(.yellow)

            Text("短い文\n(reservesSpace: false)")
                .lineLimit(3, reservesSpace: false)
                .background(.yellow)
            
            Text("長い文\n(reservesSpace: true)\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
                .lineLimit(3, reservesSpace: true)
                .background(.yellow)

            Text("長い文\n(reservesSpace: false)\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
                .lineLimit(3, reservesSpace: false)
                .background(.yellow)
        }
        .frame(width: 200)
        .padding(10)
        .background(.red)
    }
}

おわり

こういう細かいところを自分で実装しなくてもいいの助かります。

公式ドキュメント

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1