Изменить contentTintColor на mouseDown для NSButton

У меня есть пользовательская кнопка, которая является подклассом NSButton. Я хочу изменить цвет оттенка содержимого, когда кнопка находится в нажатом состоянии. Вот что у меня есть:

open override func mouseDown(with event: NSEvent) {
    // update contentTintColor
    contentTintColor = contentTintColorPressed
    // call super to inherit the click action
    super.mouseDown(with: event)
    // for some reason mouseUp doesn't trigger if I call super, so I have to override and manually call mouseUp 
    self.mouseUp(with: event)
}

В результате цвет оттенка содержимого становится backgroundColor, поэтому содержимое кнопки становится невидимым. Почему contentTintColor обновляется только тогда, когда я перетаскиваю курсор за пределы кнопки? демонстрация


person manchiu    schedule 24.12.2020    source источник


Ответы (1)


Программно можно изменить так:

@IBOutlet weak var button: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    // Change button text color when tapping is on hold.
    button.setTitleColor(UIColor.red, for: .highlighted)
}

Если у вас есть собственный класс UIButton, используйте его следующим образом:

self.setTitleColor(UIColor.red, for: .highlighted)
person Egzon P.    schedule 24.12.2020
comment
Это не работает для меня, так как я использую NSButton. Я хочу управлять цветом заголовка, используя атрибут contentTintColor. - person manchiu; 24.12.2020
comment
Привет Манчиу, дайте мне знать, как только вы найдете ответ, хотел бы знать, как это сделать для NSButton. - person Egzon P.; 30.12.2020