iPhoto как NSButton

Как создать кнопку "Нравится" в iPhoto, как на картинке

введите описание изображения здесь

Я пробовал несколько вещей, используя круглые текстурированные кнопки или устанавливая изображение кнопки в качестве шаблона. Но ни один из этих подходов не работает.

Спасибо за ваши ответы.

РЕДАКТИРОВАТЬ: изображение кнопки должно быть простым PDF-файлом. Градиент и белая тень должны быть нарисованы автоматически.


person burki    schedule 13.02.2012    source источник


Ответы (3)


Как упоминал Джастин, вы должны создать NSButton с типом Momentary Change. Затем вы должны указать, что это шаблонное изображение, включив суффикс Template в имя файла, например EditTemplate.png.

Я знаю, что вы сказали, что пытались установить изображение в качестве шаблона, но я обнаружил, что это не всегда было эффективно, если я не использовал тип кнопки Мгновенное изменение.

person Maurice Kelly    schedule 13.02.2012
comment
Когда я устанавливаю изображение в качестве шаблона, я не получаю эту белую тень, если стиль лицевой панели кнопки не имеет круглой текстуры. Когда я пробую это с круглой текстурированной кнопкой, я не могу изменить рамку кнопки. Вы видите мою дилемму? - person burki; 14.02.2012
comment
Что это за белая тень, о которой вы говорите - я не вижу белой тени на вашем снимке экрана или когда я использую iPhoto? Возможно, вам стоит обновить свой вопрос, добавив снимок экрана с изображением того, что вы получаете, когда пробуете различные варианты, и какой белой тени вы пытаетесь достичь. Кроме того, почему вы хотите изменить рамку кнопки - стиль, которого вы пытаетесь достичь, похоже, не имеет видимой рамки. - person Maurice Kelly; 14.02.2012
comment
Окончательное изображение состоит из исходного изображения (с градиентом), темной внутренней тени и белой тени. Я заметил, что iPhoto не использует встроенный шаблон для рисования, поэтому есть настраиваемый рисунок. - person burki; 15.02.2012

Вы можете создать подкласс NSButtonCell. И реализуем эти функции:

- (void)drawImage:(NSImage*)image 
        withFrame:(NSRect)frame 
           inView:(NSView*)controlView
{
     // Draw the image of the pen. 
}

- (NSRect)drawTitle:(NSAttributedString*)title 
          withFrame:(NSRect)frame 
             inView:(NSView*)controlView
{
     // Draw the text.
}

- (void)drawBezelWithFrame:(NSRect)frame 
                    inView:(NSView *)controlView
{
}

Чтобы настроить подкласс, просто отредактируйте поле «Custom Class» ячейки кнопки в Interface Builder с «NSButtonCell» на «YourSubClass».

person Olof    schedule 13.02.2012

Я думаю, что самое простое решение - создать кнопку с типом: Momentary Change и добавить на нее изображение с прозрачным фоном с файлом типа .png, и когда кнопка включена, вы можете переключиться на другое изображение с фоном.

Например, чтобы установить / изменить изображение:

[_yourButton setImage:_image];

Если я правильно понял, что Вы хотите сделать.

person Justin Boo    schedule 13.02.2012