2017-04-21 1 views
0

Je travaille sur mon premier projet Swift (hourra), qui est une application pour Mac OS. Ce que je veux faire maintenant, c'est créer des boutons, avec une couleur de texte blanche et une police personnalisée. Parce que j'avais besoin d'un nouvel attribut sur ce bouton pour stocker certaines données, j'ai créé une classe enfant de NSButton.Changer la taille de la police d'un NSButton ne change rien

Maintenant, je sais que je peux définir la police d'un bouton comme celui-ci:

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

Ce qui a fonctionné comme un charme. Après que j'ai essayé de changer la couleur du texte en faisant ceci:

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

Ce qui a fait le travail, et il a fait changer la couleur du texte, cependant, maintenant la police et la taille de la police sont de retour à défaut. Y a-t-il une option pour faire les deux?

Merci.

+0

Vous n'avez pas vraiment besoin de sous-classer NSButton pour accomplir ceci. Cela peut être facilement fait dans votre fichier XIB. Dans l'inspecteur de propriétés d'Interface Builder, sélectionnez votre bouton et définissez le type sur Changement momentané, puis entrez Buttonicon sous Image et buttonicon2 sous Autre. – KKRocks

Répondre

0

Au lieu de mettre la police en premier lieu, inclure le nom de la police et la taille de vos attributs lors de la création de votre NSAttributedString en utilisant les touches NSFontAttributeName et NSFontSizeAttribute:

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

Au-delà, il y a probablement quelques améliorations que vous pouvez apporter à la l'architecture de votre code. Sous-classement NSButton n'est pas vraiment nécessaire juste pour changer le style de texte (peut être fait soit en .xib ou votre contrôleur de vue).