如何在 watchOS 7 及更低版本上使用 navigationBarTitleDisplayMode?
How can I use navigationBarTitleDisplayMode on watchOS 7 and below?
当我尝试在针对 watchOS 6 的项目中使用 navigationBarTitleDisplayMode
时,出现此错误:
'navigationBarTitleDisplayMode' is only available in application extensions for watchOS 8.0 or newer
如何在 watchOS 的早期版本中使用它?我知道那里不会有效果,因为样式不存在,我只是想规避错误。
您可以使用 ViewBuilder 扩展来实现:
extension View {
@ViewBuilder
func navBarTitleDisplayMode(_ mode: NavigationBarItem.TitleDisplayMode) -> some View {
if #available(watchOSApplicationExtension 8.0, *) {
self
.navigationBarTitleDisplayMode(mode)
} else {
self
}
}
}
用法:
someView
.navigationBarTitle("WatchFunk") // Using this for watchOS 6 compatibility.
// Use navigationTitle when targeting
// watchOS 7 and above.
.navBarTitleDisplayMode(.inline)
当我尝试在针对 watchOS 6 的项目中使用 navigationBarTitleDisplayMode
时,出现此错误:
'navigationBarTitleDisplayMode' is only available in application extensions for watchOS 8.0 or newer
如何在 watchOS 的早期版本中使用它?我知道那里不会有效果,因为样式不存在,我只是想规避错误。
您可以使用 ViewBuilder 扩展来实现:
extension View {
@ViewBuilder
func navBarTitleDisplayMode(_ mode: NavigationBarItem.TitleDisplayMode) -> some View {
if #available(watchOSApplicationExtension 8.0, *) {
self
.navigationBarTitleDisplayMode(mode)
} else {
self
}
}
}
用法:
someView
.navigationBarTitle("WatchFunk") // Using this for watchOS 6 compatibility.
// Use navigationTitle when targeting
// watchOS 7 and above.
.navBarTitleDisplayMode(.inline)