【问题标题】:SwiftUI Picker Item multilinesSwiftUI Picker Item 多行
【发布时间】:2021-08-19 09:25:03
【问题描述】:

如何进行文本换行? 这是我的代码:

struct ContentView: View {
    private let items: [String] = [
        "OneLineLongggggggggggggggggggggggggggggggggggggggggg",
        "TwoLinesLonggggggggggggg\nLongggggggggggggggg",
        "ThreeLinesLonggggggggggggg\nLongggggggggggggggg\nLongggggggggggggggg"
    ]
    @State private var text: String = ""
    var body: some View {
        VStack {
            Picker("Select Text", selection: self.$text) {
                ForEach(self.items, id: \.self) {
                    Text($0)
                        .tag($0)
                }
            }
            Text("select: \(self.text)")
        }
    }
}

结果如下:

如果我添加 fixSize,那么元素会相互重叠:

struct ContentView: View {
    private let items: [String] = [
        "OneLineLongggggggggggggggggggggggggggggggggggggggggg",
        "TwoLinesLonggggggggggggg\nLongggggggggggggggg",
        "ThreeLinesLonggggggggggggg\nLongggggggggggggggg\nLongggggggggggggggg"
    ]
    @State private var text: String = ""
    var body: some View {
        VStack {
            Picker("Select Text", selection: self.$text) {
                ForEach(self.items, id: \.self) {
                    Text($0)
                        .tag($0)
                        .fixedSize(horizontal: false, vertical: true)
                }
            }
            Text("select: \(self.text)")
        }
    }
}

结果如下:

请告诉我从哪个方向寻找答案?

【问题讨论】:

    标签: swiftui swiftui-picker


    【解决方案1】:

    请在文本中使用 .lineLimit(任意数量的最大行数)。

    在这种情况下你可以使用

     Text($0)
        .tag($0)
        .lineLimit(3)
    

    【讨论】:

    • 它不起作用。对于一条很长的线路,这永远行不通。
    • 我现在看到您希望在选择器中使用此功能。这不受支持。
    猜你喜欢
    • 2022-06-11
    • 2022-01-22
    • 2022-06-15
    • 2021-11-24
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多