SwitUIのViewに表示の優先順位をつける

はじめに

UIKitで表示の優先順位を決める時はcontent compression registance priorityが高い方が優先されますが、SwiftUIではlayoutPriorityというメソッドが用意されています。

以下のようにTextを横に2つ並べた状態でlayoutPriorityを設定して優先順位を検証してみました。

layoutPriority

デフォルト

デフォルトでlayoutPriorityの値は0になっているので0を指定しても表示は変わりません。

struct ContentView: View {
    var body: some View {
        HStack {
            Text("左側のテキスト🤖🤖🤖")
                .lineLimit(1)
            Text("右側のテキスト🐙🐙🐙")
                .lineLimit(1)
                .layoutPriority(0)
        }
    }
}

priorityをあげる

右側のテキスト🐙のlayoutPriorityを1に設定すると以下のように右側のテキストが優先され省略がなくなります

struct ContentView: View {
    var body: some View {
        HStack {
            Text("左側のテキスト🤖🤖🤖")
                .lineLimit(1)
            Text("右側のテキスト🐙🐙🐙")
                .lineLimit(1)
                .layoutPriority(1)
        }
    }
}

マイナス値

マイナス値にも対応しているようで右側のテキスト🐙のlayoutPriorityを-1にしたところ🐙が省略されました。

struct ContentView: View {
    var body: some View {
        HStack {
            Text("左側のテキスト🤖🤖🤖")
                .lineLimit(1)
            Text("右側のテキスト🐙🐙🐙")
                .lineLimit(1)
                .layoutPriority(-1)
        }
    }
}
Swift

前の記事

2点間の距離とsort
SwiftUI

次の記事

Text