2015-04-26 19 views

Odpowiedz

13

Poniższe ustawienia domyślne dla wszystkich UITabBarItem's, można dodać do swojego AppDelegate. Zmieni to twój kolor tekstu.

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

Aby zmienić kolor ikony, można ustawić obraz dla danego stanu, w którym obraz ma już dobry kolor.

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

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

Albo można zrobić to w ten sposób:

dodać rozszerzenie do UIImage klasy (od 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 
} 
} 

iw swoim viewDidLoad:

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

Dopełnieniem Odpowiedź @ BoilingLime, tutaj jest druga alternatywa Ive za UIImage rozszerzenie 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

można umieścić go w AppDelegate też. –

+2

i jak mogę tego użyć w systemie iOS 9? –

Powiązane problemy