как кодировать NSButton, чтобы выглядеть так же, как изображение - PullRequest
12 голосов
/ 26 декабря 2010

Используя код (не построитель интерфейса) мне нужно создать NSButton, который выглядит как изображение. В частности, я хочу использовать NSImageNameStopProgressFreestandingTemplate, и мне нужно не , чтобы выглядеть как кнопка, но чтобы выглядеть как изображение. Это значит:
1. Нет кнопки внизу
2. Нет границы, нет видимости кнопки

Спасибо.

Ответы [ 2 ]

19 голосов
/ 19 августа 2011

Я знаю, что этот ответ немного запоздал, но вы можете попробовать это, учитывая thisButton:

[thisButton setImage:[NSImage imageNamed:NSImageNameStopProgressFreestandingTemplate]];
[thisButton setImagePosition:NSImageOnly];
[thisButton setBordered:NO];

Эта последняя строка является ключевым битом: удаление границы кнопки эффективно лишает ее рамки, оставляя только изображение, по которому можно щелкнуть. (Кстати, я не пробовал вышеуказанный код специально, поэтому вам может потребоваться добавить пару других настроек, например, установить imageScaling или buttonType, чтобы он работал лучше).

Последнее замечание: если вы используете шаблонное изображение (как вы и сказали), Cocoa автоматически отобразит его с небольшим темно-серым градиентом; когда кнопка нажата, она на мгновение потемнеет до сплошного черного цвета. Это автоматический вид «кнопки вниз», который вы не хотели; однако, это очень тонкий и хороший индикатор того, что кнопка сработала. Если вы не хотите, чтобы это происходило, вы можете получить экземпляр нужного изображения и [stopImage setTemplate:NO]; на нем.

0 голосов
/ 18 марта 2019

Отключить isBordered

let button = NSButton(
  image: NSImage(named: NSImage.Name("plus"))!,
  target: self,
  action: #selector(onButtonPress)
)

button.isBordered = false
...