solid color bar string swift uinavigationbar

color - NSFontAttributeName ha cambiado a String



navigationbar swift (3)

Estoy tratando de diseñar correctamente el estilo de la barra de navegación, necesito cambiar la fuente a helvetica neue con un tamaño de 19. He usado este código pero he notado que ahora no funciona tan bien:

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)]

esto sucede porque el tipo de NSFontAttributeName ha cambiado a String, he intentado arreglarlo con

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: "HelveticaNeue-Light, 19"]

pero el compilador continúa dándome un error relacionado con el tamaño del punto en la fuente, ¿cómo puedo solucionarlo?


Con Swift 4 NSFontAttributeName está en desuso, puede usar los valores NSAttributedStringKey para establecer atributos.

if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) { navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: fontStyle] }

Con Swift 4.2 NSAttributedStringKey se cambia como NSAttributedString.Key .

if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) { navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: fontStyle] }

Para obtener más opciones para NSAttributedStringKey, puede visitar este enlace https://developer.apple.com/documentation/foundation/nsattributedstringkey/


El constructor UIFont está devolviendo un opcional ( UIFont? ) Que debe desenvolver para usar. Añadir ! Si estás seguro de que tienes un nombre de fuente válido:

Swift 4:

navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Light", size: 19)!]

Swift 3:

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)!]

Nota: si está configurando una fuente con un nombre estático en su código, forzar el desenvolvimiento es seguro una vez que haya verificado que está usando un nombre de fuente válido. Si está obteniendo el nombre de la fuente de una fuente externa (el usuario o un servidor), deseará usar un enlace opcional , como if let font = UIFont(... o guard let font = UIFont(... para desenvolver de forma segura la fuente antes de su uso.


Swift 4.2

NSAttributedStringKey ha cambiado su nombre a NSAttributedString.Key en Swift 4.2

if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) { navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: fontStyle] }