在SwiftUI中设置导航栏项目样式
使用UIKit添加导航栏项目时,可以使用设置其样式。这对于以粗体文本显示的按钮很重要 SwitftUI采用在SwiftUI中设置导航栏项目样式,swiftui,uinavigationbar,Swiftui,Uinavigationbar,使用UIKit添加导航栏项目时,可以使用设置其样式。这对于以粗体文本显示的按钮很重要 SwitftUI采用视图,但没有样式。您可以通过在视图中使用粗体按钮来修改样式,但它不会适应未来操作系统样式的更改(例如,除粗体之外的样式) 如何使用SwiftUI设置导航栏项的样式?在SwiftUI中,您可以将样式附加到视图组件,而不是传递样式。这将根据未来操作系统样式的变化进行调整: import SwiftUI import PlaygroundSupport struct ContentView: V
视图
,但没有样式。您可以通过在视图中使用粗体按钮来修改样式,但它不会适应未来操作系统样式的更改(例如,除粗体
之外的样式)
如何使用SwiftUI设置导航栏项的样式?在SwiftUI中,您可以将样式附加到视图组件,而不是传递样式。这将根据未来操作系统样式的变化进行调整:
import SwiftUI
import PlaygroundSupport
struct ContentView: View {
var body: some View{
NavigationView {
Text("blah")
.navigationBarItems(leading: Text("done button")
.fontWeight(.medium)
.bold()
.foregroundColor(Color.red))
}
}
}
PlaygroundPage.current.setLiveView(ContentView())
我认为我们必须改变对SwiftUI的看法,因为“uibarbuttoneim.style”的概念不会直接适用。SwiftUI试图隐藏实现细节,并希望根据上下文将字体大小更改为“自动神奇工作”等概念 在Xcode 12.3和iOS 14.3上,默认情况下按钮样式为粗体(在NavigationView上下文中): 更改样式的一种方法是添加按钮样式:
.navigationBarItems(
leading:
Button(action: {}) {
Text("Cancel")
}.buttonStyle(PlainButtonStyle()),
trailing:
Button(action: {}) {
Text("Save")
}
)
但这并没有达到预期的效果我必须更改字体大小,使“取消”为常规样式,而“保存”为粗体…就像标准iOS一样:
.navigationBarItems(
leading:
Button(action: {}) {
Text("Cancel")
.fontWeight(Font.Weight.regular)
},
trailing:
Button(action: {}) {
Text("Save")
}
)
这样做的好处是,您不需要了解“uibarbuttonim.style”的概念:“您只需要了解按钮
是什么,以及文本
是什么——随着时间的推移,哪些API应该是熟悉的,因为它们是标准构建块
我假设所有SwiftUI导航栏项目都作为customView项目处理(可能标准后退按钮除外),因此如果您指定一些样式为粗体,它将始终为粗体。您的代码示例正在将
fontWeight
、bold
和foregroundColor
应用于Text
,而不是导航栏项。iOS似乎不太可能自动调整这些特定应用的属性。我认为当你切换到黑暗模式时,iOS甚至不会改变红色的阴影。你能指出你期望的行为被记录在哪里吗?对操作系统版本差异的良好观察。要在所有操作系统版本中获得与苹果应用程序相似的体验,您必须同时设置常规字体和粗体字体的权重。真是一团糟!您不仅需要在字体大小的抽象级别上工作,甚至没有一个稳定的默认值。UIKit让您指示按钮是否为“完成”按钮的方法要好得多。
.navigationBarItems(
leading:
Button(action: {}) {
Text("Cancel")
.fontWeight(Font.Weight.regular)
},
trailing:
Button(action: {}) {
Text("Save")
}
)