Xcode iPhoto-like按钮

Xcode iPhoto-like按钮,xcode,cocoa,nsbutton,iphoto,nsbuttoncell,Xcode,Cocoa,Nsbutton,Iphoto,Nsbuttoncell,如何在图片中创建类似iPhoto的按钮 我已经尝试了几种使用圆形纹理按钮或将按钮的图像设置为模板的方法。但这些方法都不管用 谢谢你的回答 编辑: 按钮的图像应该只是一个简单的pdf。渐变和白色阴影应该自动绘制。您可以将NSButtonCell子类化。并实现这些功能: - (void)drawImage:(NSImage*)image withFrame:(NSRect)frame inView:(NSView*)controlView { /

如何在图片中创建类似iPhoto的按钮

我已经尝试了几种使用圆形纹理按钮或将按钮的图像设置为模板的方法。但这些方法都不管用

谢谢你的回答

编辑:
按钮的图像应该只是一个简单的pdf。渐变和白色阴影应该自动绘制。

您可以将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
{
}

要设置子类,只需在Interface Builder中将按钮单元的“自定义类”字段从“NSButtonCell”编辑为“YourSubClass”

我认为最简单的解决方案是创建带有类型的按钮:瞬间更改并添加带有.png文件类型的透明背景的图像,当按钮打开时,您可以更改为其他带有背景的图片

例如,设置/更改图像:

[_yourButton setImage:_image];

如果我正确理解了您想要做的事情。

正如Justin提到的,您应该创建一个带有瞬间更改类型的
NSButton
。然后,您应该通过在文件名中包含后缀模板来指示它是模板图像,例如
editemplate.png


我知道您说过您尝试将图像设置为模板,但我发现如果我不使用“瞬间更改”按钮类型,这并不总是有效。

当我将图像设置为模板时,当按钮边框样式不是圆形纹理时,我不会得到白色阴影。当我尝试使用圆形纹理按钮时,我无法更改按钮的边框。你能看到我的困境吗?你指的是什么白色阴影?我在你的截图中没有看到任何白色阴影,或者当我使用iPhoto时?也许你应该用一个截图来更新你的问题,当你尝试各种选择时,你会得到什么,以及你想要达到的白色阴影是什么。另外,为什么您希望更改按钮的边框?您尝试实现的样式似乎没有可见的边框。最终图像由原始图像(带有渐变)、黑色内部阴影和白色阴影组成。我注意到iPhoto没有使用内置的模板绘图,所以有定制的绘图。