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

如何为Tab Bar添加系统Home图标?

解决Tab Bar Item设置系统Home图标的问题

嘿,我之前也碰到过一模一样的困扰,给你几个简单直接的解决方案,帮你快速实现类似Instagram/Messenger的底部Tab Bar:

方法一:用SF Symbols(推荐,iOS 13+)

现在苹果官方推荐用SF Symbols来获取系统图标,其中的house和house.fill图标正好对应你要的Home样式(轮廓/填充两种状态,完美匹配社交APP的Tab Bar风格)。

在你的ViewController代码里添加以下设置(比如viewDidLoad方法中):

// 设置未选中状态的轮廓图标
tabBarItem.image = UIImage(systemName: "house")?.withRenderingMode(.alwaysOriginal)
// 设置选中状态的填充图标
tabBarItem.selectedImage = UIImage(systemName: "house.fill")?.withRenderingMode(.alwaysOriginal)

// 可选:设置文字颜色,贴合社交APP风格
tabBarItem.setTitleTextAttributes([.foregroundColor: UIColor.darkGray], for: .normal)
tabBarItem.setTitleTextAttributes([.foregroundColor: UIColor.systemBlue], for: .selected)

这样设置后,图标会自动适配Tab Bar的尺寸,而且颜色也不会被系统默认渲染覆盖。

方法二:直接调用UIApplicationShortcutIconType.home的图标

如果你一定要用UIApplicationShortcutIconType.home对应的图标,可以通过代码生成对应的UIImage:

let homeShortcutIcon = UIApplicationShortcutIcon(type: .home)
// 获取图标并设置渲染模式,避免灰色问题
tabBarItem.image = homeShortcutIcon.image.withRenderingMode(.alwaysOriginal)
// 如果你需要选中状态的填充版,可能需要单独找对应的图标,因为快捷图标只有轮廓样式

解决自定义PNG显示灰色的问题

你之前添加PNG后显示灰色矩形,是因为Tab Bar Item默认会把图标设置为模板渲染模式(Template Rendering Mode),系统会自动覆盖图标原有颜色,只保留透明度。解决办法有两个:

  • 直接在Xcode中修改图片属性:选中你的PNG图片,在右侧Attributes Inspector里,把「Render As」改成「Original Image」。
  • 在代码里强制设置渲染模式:
tabBarItem.image = UIImage(named: "your-home-icon")?.withRenderingMode(.alwaysOriginal)

这样就能正常显示图片的原有颜色啦~

内容的提问来源于stack exchange,提问作者Andrew L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:13:07