在iOS 15.0以下版本上制作未填充的符号图像

mrfwxfqh  于 2023-04-08  发布在  iOS
关注(0)|答案(1)|浏览(139)

我有一个带标签的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>
我认为大多数项目应该支持iOS 15.0以下的版本(我不确定这一点,因为我是这个领域的新手),那么我如何使早期版本在TabView中显示未填充的图标(大纲/默认/无)?

2lpgd968

2lpgd9681#

据我所知,这是预期的行为,并记录在案。
检查这里的documentation.根据它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")
    }
}

相关问题