我想将我的标签栏项目更改为粉红色,而不是默认的蓝色。
如何使用Xcode 6中的情节提要编辑器完成此任务?
这是我目前无法使用的设定,蓝色背景有效,但粉红色无效:
我想将我的标签栏项目更改为粉红色,而不是默认的蓝色。
如何使用Xcode 6中的情节提要编辑器完成此任务?
这是我目前无法使用的设定,蓝色背景有效,但粉红色无效:
Answers:
从StoryBoard添加名为“ tintColor”的运行时颜色属性。这正在工作(适用于Xcode 8及更高版本)。
如果您想要未选择的颜色,也可以添加unselectedItemTintColor
。
UITabBarItem
在UINavigationController
连接到我的tabBar的上设置此运行时属性,它可以完美地工作。都不需要编写任何代码,这太好了,因为我重复使用了VC类3次。谢谢!
这个优雅的解决方案非常适用于SWIFT 3.0,SWIFT 4.2和SWIFT 5.1:
在情节提要上:
编辑:使用Xcode 8/10,适用于iOS 10/12及更高版本。
在Swift中,使用xcode 7(及更高版本),可以将以下内容添加到AppDelegate.swift文件中:
UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)
这是完整方法的外观:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// I added this line
UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)
return true
}
在上面的示例中,我的项目将为白色。需要使用“ /255.0”,因为它期望的值为0到1。对于白色,我本可以使用1。但是对于其他颜色,您可能会使用RGB值。
雨燕3 | Xcode 10
如果要使所有选项卡栏项目具有相同的颜色(选中和未选中)...
第1步
确保将您的图像资产设置为“ 渲染为=模板图像”。这使他们可以继承颜色。
第2步
使用情节提要板编辑器可以如下更改标签栏设置:
第三步
步骤1和2将更改所选图标的颜色。如果您仍想更改未选中项目的颜色,则需要在代码中进行更改。我没有找到通过情节提要编辑器执行此操作的方法。
创建自定义标签栏控制器类...
// TabBarController.swift
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// make unselected icons white
self.tabBar.unselectedItemTintColor = UIColor.white
}
}
...并将自定义类分配给标签栏场景控制器。
如果您知道如何通过情节提要编辑器更改未选择的图标颜色,请告诉我。谢谢!
self.tabBar.unselectedItemTintColor = UIColor.white
self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1)
为我工作
将此代码放在要更改其颜色的视图控制器的viewDidLoad中
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
您可以通过情节提要更改颜色UITabBarItem,但是如果您想通过代码更改颜色,则非常简单:
//使用此按钮更改所选栏的颜色
[[UITabBar appearance] setTintColor:[UIColor blueColor]];
//更改未选中的栏(iOS 10)
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];
//这行用于更改所有标签栏的颜色
[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
这是在iOS 10中可以使用的Swift 3解决方案:
首先,您创建自己的选项卡栏控制器子类,并将其添加到情节提要中的选项卡控制器中。viewDidLoad()
然后,您可以在该方法中自定义标签栏。这里应该说的tintColor
属性tabBar
代表所选项目的颜色,而不是未选中项目的颜色!为了更改未选中项目的颜色,我建议遍历每个项目并使用图像的原始颜色,这样它们不会自动呈现为灰色。
class CustomTabBarVC: UITabBarController
{
override func viewDidLoad()
{
super.viewDidLoad()
self.tabBar.tintColor = AppColor.normalRed
self.tabBar.barTintColor = .white
self.tabBar.isTranslucent = true
if let items = self.tabBar.items
{
for item in items
{
if let image = item.image
{
item.image = image.withRenderingMode( .alwaysOriginal )
}
}
}
}
}
这种方法的唯一缺点是您的商品图像必须已经具有所需的目标颜色。
您可以将子类化UITabBarController
,然后在情节提要中将其替换。在viewDidLoad
子类的实现中,调用以下代码:
[self.tabBar setTintColor:[UIColor greenColor]];
'UITabBar' does not have a member named 'setSelectedImageTintColor'
self.tabBar.setSelectedImageTintColor = UIColor.greenColor
不确定那是正确还是不正确
tintColor
不是selectedImageTintColor
,顺便说一句selectedImageTintColor
在iOS的8弃用