ich XCode 7.0 aktualisiert und ich erhalte diese Warnmeldung:Was bedeutet NSObject.BroadSystemFontWeights Warnmeldung?
Xcode.IDEInterfaceBuilder.Cocoa.NSObject.BroadSystemFontWeights
Was bedeutet es, und wie werde ich sie los?
ich XCode 7.0 aktualisiert und ich erhalte diese Warnmeldung:Was bedeutet NSObject.BroadSystemFontWeights Warnmeldung?
Xcode.IDEInterfaceBuilder.Cocoa.NSObject.BroadSystemFontWeights
Was bedeutet es, und wie werde ich sie los?
Ich habe den gleichen Fehler, wenn ich die Schriftgröße auf Semibold
auf ein Label mit Systemschriftart festlegen. Dieses Gewicht ist für die neue Systemschriftart (San Francisco) verfügbar, aber nicht für die alte Helvetica Neue, also denke ich, dass dieser Fehler bedeutet, dass wir nicht das richtige Gewicht auf älteren OS bekommen.
Ändern der Schrift auf ein Gewicht auch für Helvetica Neue, Bold
in meinem Fall, hat den Fehler für mich behoben.
Das Problem ist nicht mit dem Ändern der Systemschriftart, das Problem ist, dass Xcode diese nicht richtig behandelt - widersprüchliche Aussage, ich weiß, siehe full blog post für Details. Es gibt drei Szenarien.
Erstens - explizite Typografie ist nicht wichtig, normales Gewicht ist akzeptabel. Dann bleiben Sie bei Marcos Antwort und verwenden Sie explizites normales Gewicht.
Zweitens - explizite Typografie ist vorzuziehen, kann aber auf älteren Systemen kompromittiert werden. Dies ist das Standardverhalten, Xcode zeigt einfach eine Warnung an und verwendet eine normale Schriftart für Pre-10.11-Ziele. Wenn Sie adaptive Layouts verwenden, sollte alles in Ordnung sein. Um erhalten die Warnung loswerden, können Sie einfach höher eingestellt Ziel im Storyboard-Inspektor:
Hinweis, wenn Ihr Storyboard Ausweichfunktionen für frühere Ziele verwendet, können sie deaktiviert werden, was zu Problemen führen - I haven Ich bin noch nie auf etwas gestoßen.
Dritte - explizite Typografie ist ein Muss. In diesem Fall können Sie ein benutzerdefiniertes Textfeld mit benutzerdefinierten inspectiven Eigenschaften verwenden. Öffnen Sie den Identity Inspector und setzen Sie die benutzerdefinierte Klasse auf TextField, das Attribut für die bevorzugte Schriftgröße wird im Attributinspektor angezeigt, legen Sie den erforderlichen Wert fest, erstellen Sie und genießen Sie das Ergebnis.
import AppKit
@IBDesignable public class TextField: NSTextField
{
@IBInspectable public var preferredFontWeight: Int = 0
override public func awakeFromNib() {
if #available(OSX 10.11, *) {
return
}
guard
let weight: Int = self.preferredFontWeight where weight > 0,
let font: NSFont = self.font,
let name: String = font.familyName,
let manager: NSFontManager = NSFontManager.sharedFontManager() else {
return
}
// Full details here – https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSFontManager_Class/#//apple_ref/occ/instm/NSFontManager/convertWeight:ofFont:
//
// 1 – ultralight
// 2 – thin
// 3 – light, extralight
// 4 – book
// 5 – regular, display
// 6 – medium
// 7 – demi, demibold
// 8 – semi, semibold
// 9 – bold
// 10 – extra, extrabold
// 11 – heavy
// 12 – black
// 13 – ultrablack
// 14 – extrablack
if let font: NSFont = manager.fontWithFamily(name, traits: manager.traitsOfFont(font), weight: weight, size: font.pointSize) {
self.font = font
}
}
}
P.S. Fettes Gewicht funktioniert wahrscheinlich, weil es eine etwas andere Logik verwendet - es gibt boldSystemFontOfSize(_:), die seit OS X 10.0 verfügbar ist, im Gegensatz zu vielen anderen Methoden, auf die sich das Storyboard verlassen könnte.
Beachten Sie, dass der Fehler weiterhin besteht, wenn Sie die Schriftgröße auf "Medium" setzen, die in beiden Schriftfamilien verfügbar ist. – Henrik