Изменить шрифт для NSButton с проверяемым / проектируемым свойством - PullRequest
0 голосов
/ 02 мая 2020

Не уверен, как это сделать. Я нашел кусок кода для пользовательского класса NSButton, который создает проверяемые свойства для размера и цвета шрифта, но это все. Есть ли способ добавить наборы шрифтов на моем Ma c в свойство, которое я могу изменить для этого класса, или, возможно, получить шрифт, который я установил в других настраиваемых атрибутах, таких как заголовок? Вот этот класс:

import Cocoa

class TextButton: NSButton {

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        // Drawing code here.
    }

    @IBInspectable open var textColor: NSColor = NSColor.black
    @IBInspectable open var textSize: CGFloat = 10


    public override init(frame frameRect: NSRect) {
        super.init(frame: frameRect)
    }

    public required init?(coder: NSCoder) {
        super.init(coder: coder)
    }

    override func awakeFromNib() {
        let titleParagraphStyle = NSMutableParagraphStyle()
        titleParagraphStyle.alignment = alignment

        let attributes: [NSAttributedString.Key : Any] = [.foregroundColor: textColor, .font: NSFont.boldSystemFont(ofSize: textSize), .paragraphStyle: titleParagraphStyle]
        self.attributedTitle = NSMutableAttributedString(string: self.title, attributes: attributes)
    }

}

1 Ответ

0 голосов
/ 02 мая 2020

Я думаю, что нашел решение. Кажется, работает. Я ищу способ сделать несокругленную кнопку pu sh для правильного выделения при нажатии, но IB не позволит вам сделать это. Круглая кнопка - это стиль, который вы можете выбрать, но он не рекомендуется, поэтому мне нужно искать решение этой проблемы.

@IBDesignable
class TextButton: NSButton
{
    @IBInspectable var textColor: NSColor?

    override func awakeFromNib()
    {
        if let textColor = textColor, let font = font
        {
            let style = NSMutableParagraphStyle()
            style.alignment = .center

            let attributes =
                [
                    NSAttributedString.Key.foregroundColor: textColor,
                    NSAttributedString.Key.font: font,
                    NSAttributedString.Key.paragraphStyle: style
                    ] as [NSAttributedString.Key : Any]

            let attributedTitle = NSAttributedString(string: title, attributes: attributes)
            self.attributedTitle = attributedTitle
        }
    }

    override func draw(_ dirtyRect: NSRect)
    {
        super.draw(dirtyRect)
    }
}
...