Jak zmienić kolor ikony i tekstu niewymienionych na pasku kart? Znalazłem tę odpowiedź (How to change inactive icon/text color on tab bar?), ale nie mogę jej zaimplementować jako szybkiej.Jak zmienić kolor ikony paska nie wybrana w szybkim?
5
A
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
}
}
można umieścić go w AppDelegate też. –
i jak mogę tego użyć w systemie iOS 9? –