You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码禁用Storyboard中UITabBar的Standard外观以适配iOS12

解决方案

首先明确:你在Storyboard中设置的Standard外观属于iOS 13+专属配置,会在Storyboard解码加载阶段就被读取解析,执行时机远早于你写的版本判断代码,所以仅在else分支写代码无法避免iOS 12的崩溃,需要按以下步骤处理:

  • 第一步:先打开Storyboard,找到对应UITabBar的属性检查器,把Appearances选项从Standard改回默认的Default,移除Storyboard中写入的高版本专属配置。
  • 第二步:在版本判断分支中分别用对应系统的API配置外观,参考代码如下:
if #available(iOS 13.0, *) {
    // iOS 13+ 自行创建外观配置,实现你要的样式
    let appearance = UITabBarAppearance()
    // 在这里设置你需要的外观属性,比如背景色、图标文字样式等
    appearance.configureWithDefaultBackground()
    // 赋值给tabBar的对应属性
    tabBar.standardAppearance = appearance
    // 如果需要适配iOS 15+滚动边缘的样式,也可以加上以下配置
    if #available(iOS 15.0, *) {
        tabBar.scrollEdgeAppearance = appearance
    }
} else {
    // iOS 12 直接用旧版API配置样式即可,不需要额外做禁用操作
    tabBar.barTintColor = // 你需要的背景色
    tabBar.tintColor = // 你需要的选中项颜色
    tabBar.unselectedItemTintColor = // 你需要的未选中项颜色
}

补充说明:如果你的项目中多个页面都用了相同的UITabBar样式,也可以直接在iOS 13+分支设置UITabBar.appearance()的全局外观,不用每个页面单独配置。

内容的提问来源于stack exchange,提问作者geohei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:15:03