ios - bar - Cambiando titleTextAttribute en swift
uinavigationitem title color (5)
Desde que actualicé xcode no puedo cambiar el titleTextAttribute
. Ahora cuando uso el siguiente código me sale este error:
No se pudo encontrar un inicio de sobrecarga que acepte estos argumentos proporcionados
Código en appDelegate
:
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name: "Ubuntu", size: 17), NSForegroundColorAttributeName:UIColor.whiteColor()]
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Ubuntu-Light", size: 15), NSForegroundColorAttributeName:UIColor.whiteColor()], forState: UIControlState.Normal)
Hubo un cambio reciente para que UIFont(name:size:)
devuelva una instancia de UIFont
opcional. Tendrás que desenvolverlos para que funcione. Utilizando !
es la forma más fácil, pero le provocará un bloqueo si la fuente no está en el sistema. Intenta algo como:
let navbarFont = UIFont(name: "Ubuntu", size: 17) ?? UIFont.systemFontOfSize(17)
let barbuttonFont = UIFont(name: "Ubuntu-Light", size: 15) ?? UIFont.systemFontOfSize(15)
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: navbarFont, NSForegroundColorAttributeName:UIColor.whiteColor()]
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: barbuttonFont, NSForegroundColorAttributeName:UIColor.whiteColor()], forState: UIControlState.Normal)
Para Swift 3 puedes probar lo siguiente:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
Swift 4:
if let navFont = UIFont(name: "Futura", size: 18) {
let navBarAttributesDictionary: [NSAttributedStringKey: Any] = [
NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): UIColor(netHex: Colors.BabyBlue.rawValue),
NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue): navFont ]
UINavigationBar.appearance().titleTextAttributes = navBarAttributesDictionary
}
Swift 4:
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.white], for: .normal)
UINavigationBar.appearance().titleTextAttributes = [
NSAttributedStringKey.foregroundColor: UIColor.white
]
if let navFont = UIFont(name: "HelveticaNeue-Bold", size: 30.0) {
let navBarAttributesDictionary: [NSObject: AnyObject]? = [
NSForegroundColorAttributeName: UIColor.blackColor(),
NSFontAttributeName: navFont
]
navigationController?.navigationBar.titleTextAttributes = navBarAttributesDictionary
}