我有一个带标签的TabView,我不知道为什么这根本没有记录,我发现在stackoverflow的另一个问题上,以下几行代码只适用于iOS 15.0:
if (selectedTab == 2) {
Label("Playlist", systemImage: "star.fill")
} else {
Label("Playlist", systemImage: "star")
.environment(.symbolVariants, .none)
}
当我的项目有15.0作为最小版本时,这可以正常工作,但是,任何低于标记以下错误:
Key path value type 'WritableKeyPath<EnvironmentValues, SymbolVariants>' cannot be converted to contextual type 'KeyPath<EnvironmentValues, SymbolVariants>
如何使早期版本显示TabView中未填充的图标(outline/default/none) ?
据我所知,这是预期的行为,并且是记录的。
查看这里的文档。根据它SymbolVariants
只在iOS 15 +
版本中可用。所以我们的代码将只工作项目有15.0作为最低版本,它会给上面的错误,当使用一个较低的版本。
你能做的是检查版本并添加单独的代码,如下所示。
if #available(iOS 15.0, *) {
if selectedTab == 2 {
Label("Favorites", systemImage: "star.fill")
} else {
Label("Favorites", systemImage: "star")
.environment(.symbolVariants, .none)
}
} else {
if selectedTab == 2 {
Label("Favorites", systemImage: "star.fill")
} else {
Label("Favorites", systemImage: "star")
}
}