webentwicklung-frage-antwort-db.com.de

NSFontAttributeName wurde in String geändert

ich versuche, die Navigationsleiste richtig zu gestalten. Ich muss die Schriftart in Helvetica Neue mit einer Größe von 19 ändern. Ich habe diesen Code schon einmal verwendet, aber ich habe bemerkt, dass jetzt nicht mehr so ​​gut funktioniert: 

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

dies geschieht, weil der Typ von NSFontAttributeName in String geändert wurde. Ich habe versucht, das Problem zu beheben

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

aber der Compiler gibt mir weiterhin einen Fehler bezüglich der Punktgröße in der Schriftart. Wie kann ich das beheben?

33
Mono.WTF

Der UIFont-Konstruktor gibt ein optionales (UIFont?) zurück, das Sie zur Verwendung auspacken müssen. Fügen Sie ! hinzu, wenn Sie sicher sind, dass Sie einen gültigen Schriftartnamen haben:

Swift 4.2:

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

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)!]

Hinweis: Wenn Sie eine Schriftart mit einem statischen Namen in Ihrem Code festlegen, ist das Erzwingen des Abwickelns sicher, sobald Sie überprüft haben, dass Sie einen gültigen Schriftartnamen verwenden. Wenn Sie den Namen der Schriftart von einer externen Quelle (dem Benutzer oder einem Server) erhalten, sollten Sie die Option optionale Bindung wie if let font = UIFont(... oder guard let font = UIFont(... verwenden, um die Schriftart vor der Verwendung sicher zu entpacken. 

94
vacawama

Mit Swift 4 ist NSFontAttributeName veraltet. Sie können NSAttributedStringKey-Werte verwenden, um Attribute festzulegen.

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

Mit Swift 4.2 wird NSAttributedStringKey als NSAttributedString.Key geändert.

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

Weitere Optionen für NSAttributedStringKey finden Sie unter folgendem Link https://developer.Apple.com/documentation/foundation/nsattributedstringkey/

50
abdullahselek

Swift 4.2

NSAttributedStringKey wurde in Swift 4.2 in NSAttributedString.Key umbenannt

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