Il problema non è con la modifica del peso del font di sistema, il problema è che Xcode non lo gestisce correttamente - affermazione contraddittoria, lo so, vedere full blog post per i dettagli. Ci sono tre scenari.
Primo: la tipografia esplicita non è importante, il peso normale è accettabile. Quindi segui la risposta di Marco e usa il peso regolare esplicito.
Secondo: la tipografia esplicita è preferibile, ma può essere compromessa su sistemi precedenti. Questo è il comportamento predefinito in questo momento, Xcode mostra semplicemente un avvertimento e usa font regolari su target pre-10.11. Se si utilizzano layout adattivi, tutto dovrebbe andare bene. Per sbarazzarsi del l'avviso, si può semplicemente impostare obiettivi più elevati ispettore storyboard:
nota, se il vostro storyboard utilizza le funzionalità di fallback per gli obiettivi precedenti, potrebbero diventare disabili, che causerà problemi - Mi rifugio non ne ho mai visto così lontano.
Terzo: la tipografia esplicita è un must. In questo caso è possibile utilizzare un campo di testo personalizzato con proprietà personalizzate ispezionabili. Apri la finestra di ispezione dell'identità e imposta la classe personalizzata su TextField, l'attributo di peso font preferito verrà visualizzato nell'ispettore Attributi, imposta il valore richiesto, crea e gusta il risultato.
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. Il grassetto funziona probabilmente perché utilizza una logica leggermente diversa: c'è lo boldSystemFontOfSize(_:) disponibile da OS X 10.0, a differenza di molti altri metodi su cui lo storyboard potrebbe basarsi.
Si noti che se si imposta il carattere su 'Media', che è disponibile in entrambe le famiglie di caratteri, l'errore persiste. – Henrik