2015-04-26 4 views

Antwort

13

Im Folgenden werden die Standardwerte für alle UITabBarItems festgelegt. Sie können sie zu Ihrer AppDelegate hinzufügen. Es wird Ihre Textfarbe ändern.

UITabBarItem.appearance().setTitleTextAttributes({NSForegroundColorAttributeName: UIColor.blackColor()}, forState:.Selected) 
UITabBarItem.appearance().setTitleTextAttributes({NSForegroundColorAttributeName: UIColor.whiteColor()}, forState:.Normal) 

Für das Symbol‘Farbwechsel können Sie entweder das Bild für den gegebenen Zustand versetzt, wo Ihr Bild bereits die gute Farbe hat.

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

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

Oder Sie können es auf diese Weise tun:

eine Erweiterung UIImage Klasse (von this answer):

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 
} 
} 

Und in Ihrem viewDidLoad:

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

Ergänzung @ BoilingLime's Antwort, hier geht es die zweite Alternative UIImage Erweiterung des ive in Swift 3:

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

    let context = UIGraphicsGetCurrentContext()! as CGContext 
    context.translateBy(x: 0, y: self.size.height) 
    context.scaleBy(x: 1.0, y: -1.0); 
    context.setBlendMode(CGBlendMode.normal) 

    let rect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height) 
    context.clip(to: rect, mask: self.cgImage!) 
    color1.setFill() 
    context.fill(rect) 

    let newImage = UIGraphicsGetImageFromCurrentImageContext()! as UIImage 
    UIGraphicsEndImageContext() 

    return newImage 
} 
} 
11

iOS 10

class TabBarVC: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // make unselected icons white 
     self.tabBar.unselectedItemTintColor = UIColor.white 
    } 
} 
+0

können Sie es in AppDelegate setzen, auch. –

+2

und wie kann ich das für iOS 9 verwenden? –

Verwandte Themen