2017-04-21 4 views
0

Ich arbeite an meinem ersten Swift-Projekt (Hurra), die eine App für Mac OS ist. Ich möchte jetzt einige Schaltflächen mit einer weißen Textfarbe und einer benutzerdefinierten Schriftart erstellen. Da ich ein neues Attribut für diese Schaltfläche benötigte, um einige Daten zu speichern, erstellte ich eine untergeordnete Klasse NSButton.Ändern der Schriftgröße eines NSButton ändert nichts

Nun, ich weiß, dass ich die Schrift auf eine Schaltfläche wie folgt einstellen:

super.font = NSFont(name: "NB-International-Pro", size: 40) 

, die wie ein Charme. Danach habe ich versucht, dies die Farbe des Textes zu ändern, indem Sie:

let pstyle = NSMutableParagraphStyle() 
pstyle.alignment = .center 
super.attributedTitle = NSAttributedString(string: (device?.name)!, attributes: [ NSForegroundColorAttributeName : NSColor.white, NSParagraphStyleAttributeName : pstyle ]) 

Welche Arbeit getan, und es hat die Farbe des Textes ändern, aber jetzt die Schriftart und Schriftgröße zurück zur Standardeinstellung ist. Gibt es eine Option, beides zu tun?

Danke.

+0

Sie müssen NSButton nicht wirklich ableiten, um dies zu erreichen. Es kann leicht in Ihrer XIB-Datei durchgeführt werden. Wählen Sie im Eigenschaftsinspektor von Interface Builder Ihre Schaltfläche aus, und legen Sie den Typ auf Momentary Change fest, und geben Sie dann unter Alternate das Symbol button unter Image und buttonicon2 ein. – KKRocks

Antwort

0

Statt zunächst die Schriftart einstellen, umfassen den Namen der Schriftart und Größe in Ihre Attribute, wenn Ihr NSAttributedString mithilfe der NSFontAttributeName und NSFontSizeAttribute Schlüssel zu erstellen:

attributedTitle = NSAttributedString(string: (device?.name)!, attributes: [ NSForegroundColorAttributeName : NSColor.white, NSParagraphStyleAttributeName : pstyle, NSFontAttributeName: "NB-International-Pro", NSFontSizeAttribute: 40]) 

Darüber hinaus gibt es wahrscheinlich einige Verbesserungen, die Sie zu der machen kann Architektur Ihres Codes. Die Unterklasse NSButton wird nicht wirklich benötigt, nur um den Textstil zu ändern (kann entweder in .xib oder in Ihrem View-Controller erfolgen).

Verwandte Themen