// this code need to be placed on home page of tabbar
for(UITabBarItem *item in self.tabBarController.tabBar.items) {
item.image = [item.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
iOS 10以上:
// this need to be in appdelegate didFinishLaunchingWithOptions
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor blackColor]];
18 回答
对我来说,改变Tabbar的颜色非常简单:
试试这个!!!
[[self tabBar] insertSubview:v atIndex:0];
对我来说非常合适 .我已经能够通过子类化UITabBarController并使用私有类来使其工作:
iOS 5添加了一些新的外观方法,用于自定义大多数UI元素的外观 .
您可以使用外观代理在应用程序中定位UITabBar的每个实例 .
对于iOS 5 6:
对于iOS 7及更高版本,请使用以下内容:
使用外观代理将更改整个应用程序中的任何标签栏实例 . 对于特定实例,请使用该类的一个新属性:
我有一个最终答案的附录 . 虽然基本方案是正确的,但可以改进使用部分透明颜色的技巧 . 我假设它只是让默认渐变显示出来 . 哦,同样,TabBar的高度是49像素而不是48像素,至少在OS 3中是这样 .
因此,如果你有一个带有渐变的适当的1 x 49图像,这是你应该使用的viewDidLoad的版本:
当您使用addSubview时,您的按钮将失去可点击性,因此不会
使用:
没有简单的方法可以做到这一点,你基本上需要子类UITabBar并实现自定义绘图来做你想要的 . 对于这种效果来说,这是相当多的工作,但它可能是值得的 . 我建议向Apple提交一个错误,将其添加到未来的iPhone SDK中 .
以下是完美的解决方案 . 这适用于iOS5和iOS4 .
在iOS 7上:
我还建议先根据您的视觉需求进行设置:
条形样式在视图内容和标签栏之间放置一个微妙的分隔符 .
for just background color
或者在App Delegate中
for changing color of unselect icons of tabbar
对于iOS 10:
iOS 10以上:
现有答案中有一些好主意,许多工作略有不同,您选择的还取决于您定位的设备以及您希望实现的外观 .
UITabBar
在定制它的外观方面是出了名的不直观,但这里有一些可能有用的技巧:1) . 如果你想摆脱光面覆盖层以获得更平坦的外观,请执行以下操作:
2) . 要将自定义图像设置为tabBar按钮,请执行以下操作:
selected
和unselected
是您选择的UIImage
个对象 . 如果您希望它们是平面颜色,我发现最简单的解决方案是使用所需的backgroundColor
创建UIView
,然后在QuartzCore的帮助下将其渲染为UIImage
. 我在UIView
的类别中使用以下方法来获取带有视图内容的UIImage
:3)最后,您可能想要自定义按钮 Headers 的样式 . 做:
这可以让你做一些调整,但仍然非常有限 . 特别是,您无法自由修改文本在按钮中的放置位置,并且不能为选定/未选择的按钮设置不同的颜色 . 如果要进行更具体的文本布局,只需将
UITextAttributeTextColor
设置为清除,然后将文本添加到第(2)部分的selected
和unselected
图像中 .另一个解决方案(这是一个hack)是将tabBarController上的alpha设置为0.01,这样它几乎不可见但仍然可以点击 . 然后使用alpha'ed tabBarCOntroller下面的自定义tabbar图像在MainWindow笔尖的底部设置一个ImageView控件 . 然后在tabbarcontroller切换视图时交换图像,更改颜色或高亮度 .
但是,您失去了“...更多”和自定义功能 .
嗨我在使用iOS SDK 4,我只用两行代码解决了这个问题,就像这样
希望这可以帮助!
Swift 3.0 answer: (来自Vaibhav Gaikwad)
要更改tabbar的取消选择图标的颜色:
仅用于更改文本颜色:
Swift 3使用
AppDelegate
的外观执行以下操作:UITabBar.appearance().barTintColor = your_color