【问题标题】:SwiftUI - Always left (leading) align navigationBarItems(leading: Text(""))SwiftUI - 总是左(前导)对齐导航栏项(前导:文本(“”))
【发布时间】:2020-11-24 21:26:59
【问题描述】:

我有一个具有动态领先项目的 NaivgationView。也就是说,当用户点击按钮时,其文本会更新。所以它并不总是一样的。

此代码与我的项目具有相似的功能。

struct ContentView: View {
    @State var selectedDay: String = "Wednesday"
    let days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    var body: some View {
        NavigationView {
            VStack {
                List {
                    ForEach(0..<days.count) {day in
                        Button(action: {
                            self.selectedDay = days[day]
                        }, label: {
                            Text(days[day])
                        })
                    }
                }
            }
            .navigationBarItems(leading: Text($selectedDay.wrappedValue))
        }
    }
}

我希望文本始终保持左对齐。但是,如果文本的字母少于第一个,则它不在左侧。例如在上面的代码中,Wednesday 在最左边,但 friday 不在。领先的一方有 16 分。那么如何左对齐文本呢?


我也用过这段代码,但还是有同样的问题。

VStack(alignment: .leading) {
     Text($selectedDay.wrappedValue)
}

【问题讨论】:

    标签: swiftui navigationview


    【解决方案1】:

    您可以为 Text 添加一个框架并设置其对齐方式:

       .navigationBarItems(leading:
                                Text(selectedDay)
                                    .frame(width: 100, alignment: .leading)
        )
    

    【讨论】:

    • 这里不需要绑定,直接使用属性也会更新值。
    • 谢谢。 @Asperi & @nicksarno 有没有办法在不使用固定大小的情况下做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2017-06-13
    • 2018-09-15
    • 2022-07-15
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    相关资源
    最近更新 更多