如何在swift中更改标签栏未选中图标的颜色?

Wal*_*est 8 uitabbaritem ios swift

如何更改标签栏未选择的图标和文字的颜色?我找到了这个答案(如何更改标签栏上的非活动图标/文本颜色?),但无法为swift实现它.

Der*_*ike 26

iOS 10

class TabBarVC: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // make unselected icons white
        self.tabBar.unselectedItemTintColor = UIColor.white
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 以及如何在iOS 9中使用它? (3认同)

Boi*_*ime 13

下面设置了所有UITabBarItem的默认值,您可以将其添加到您的AppDelegate.它会改变你的文字颜色.

UITabBarItem.appearance().setTitleTextAttributes({NSForegroundColorAttributeName: UIColor.blackColor()}, forState:.Selected)
UITabBarItem.appearance().setTitleTextAttributes({NSForegroundColorAttributeName: UIColor.whiteColor()}, forState:.Normal)
Run Code Online (Sandbox Code Playgroud)

要更改图标的颜色,您可以将图像设置为图像已经具有良好颜色的给定状态.

self.tabBarItem.selectedImage = [[UIImage imageNamed:@"selectedImage"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

self.tabBarItem.image = [[UIImage imageNamed:@"notSelectedImage"] 
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做:

UIImage类添加扩展(从此答案):

extension UIImage {
func imageWithColor(color1: UIColor) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)

    let context = UIGraphicsGetCurrentContext() as CGContextRef
    CGContextTranslateCTM(context, 0, self.size.height)
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextSetBlendMode(context, kCGBlendModeNormal)

    let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect
    CGContextClipToMask(context, rect, self.CGImage)
    color1.setFill()
    CGContextFillRect(context, rect)

    let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage
    UIGraphicsEndImageContext()

    return newImage
}
}
Run Code Online (Sandbox Code Playgroud)

在你的viewDidLoad:

for item in self.tabBar.items as [UITabBarItem] {
    if let image = item.image {
        item.image = image.imageWithColor(UIColor.blackColor()).imageWithRenderingMode(.AlwaysOriginal)
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

在iOS 11中,您可以直接在情节提要中的UIToolBar上设置属性:

unselectedItemTintColor | 颜色| [所需颜色]

Xcode打印

屏幕截图


Abh*_*ain 7

斯威夫特 4+

UITabBar.appearance().unselectedItemTintColor = UIColor.green
Run Code Online (Sandbox Code Playgroud)

appDelegate's didFinishLaunchingWithOptions方法中使用此代码。