3

今天我在 Xcode 12 上遇到了问题。当我尝试 iOS 15 版本的应用程序时,我注意到标签栏背景发生了变化。我通过添加这行代码解决了这个问题

if (@available(iOS 15.0, *)) {
    [[UITabBar appearance] setScrollEdgeAppearance:tabBarAppearance.appearance];
}

但是在我从 Xcode 13 换回 Xcode 12 后,我遇到了这个问题。

'UITabBar' 没有可见的@interface 声明选择器'setScrollEdgeAppearance:'

对我来说似乎是 Xcode12 错误,但也许我错了。

编辑:添加了代码中的 if 语句

4

3 回答 3

2

在 swift-file 中对我们有用的唯一解决方案:

#if swift(>=5.5) // Only run on Xcode version >= 13 (Swift 5.5 was shipped first with Xcode 13).
        if #available(iOS 15.0, *) {
            UITabBar.appearance().scrollEdgeAppearance = tabBarAppearance
        }
#endif

该片段确保它仅使用 Xcode 版本 > 13 编译并且仅适用于 iOS 15。Swift 5.5 是随 Xcode 13 引入的。

于 2021-10-15T10:38:24.653 回答
1

我认为那是因为scrollEdgeAppearance它只是UINavigationBariOS < 15 版本的属性。自 iOS 15 以来,他们已将其扩展到所有其他导航栏

根据苹果文档:

在使用 iOS 14 或更早版本的应用程序上运行时,此属性适用于具有大标题的导航栏。在 iOS 15 中,此属性适用于所有导航栏。

于 2021-09-10T15:29:44.990 回答
0

它只在 Xcode 13 中可用。所以我们这样做是为了解决这个问题并能够在 Xcode 12 和 13 上编译:

#if __clang_major__ >= 13
if (@available(iOS 15.0, *)) {
    [[UITabBar appearance] setScrollEdgeAppearance:tabBarAppearance.appearance];
}
#endif
于 2021-10-04T12:54:00.700 回答