i'm trying to style the navigation bar properly, i need to change the font to helvetica neue with a size point of 19. I've ever used this code but i've notice that now doesn't work as well:
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)]
this happens because the type of NSFontAttributeName has changed to String, i've tried to fix it with
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: "HelveticaNeue-Light, 19"]
but the compiler continue to give me an error related to point size in font, how can i fix it?
Swift 4.2
NSAttributedStringKey has renamed to NSAttributedString.Key in Swift 4.2
With Swift 4 NSFontAttributeName is deprecated, you can use NSAttributedStringKey values to set attributes.
With Swift 4.2
NSAttributedStringKey
is changed asNSAttributedString.Key
.For more options for NSAttributedStringKey you can visit this link https://developer.apple.com/documentation/foundation/nsattributedstringkey/
The
UIFont
constructor is returning an optional (UIFont?
) which you must unwrap to use. Add!
if you're sure you have a valid font name:Swift 4.2:
Swift 4:
Swift 3:
Note: If you are setting a font with a static name in your code, then force unwrapping is safe once you’ve verified you’re using a valid font name. If you are getting the font name from an external source (the user or a server), you will want to use optional binding such as
if let font = UIFont(...
orguard let font = UIFont(...
to safely unwrap the font before use.