如何在NSButton上垂直居中图像

时间:2011-12-23 20:17:43

标签: objective-c macos cocoa nsbutton nstoolbar

我正在以Lion Mail.app的方式构建一个Mac应用程序。作为其中的一部分,我正在尝试为Mail.app中的工具创建一个类似的工具栏,但我似乎无法将工具栏按钮中的图像垂直居中。

查看Mail.app工具栏,我看到一系列带有居中图标的精彩按钮:

enter image description here

但是当我去界面构建器时,我似乎无法重新创建相同的按钮。我得到的是:

enter image description here

我尝试做的是在Interface Builder中:

  1. 创建一个新窗口
  2. 将NSToolbar添加到该窗口
  3. 将NSButton添加到工具栏中,使用样式 - “推送”,图像 - “信封”,位置 - “NSImageOnly”,缩放 - “按比例缩小”
  4. 正如您所看到的那样,图标显然没有垂直居中在按钮上,就像Mail.app工具栏中那样。

    任何人有任何想法???

    目前我正在使用XCode 4.2并使用Interface Builder布置此按钮。我正在尝试通过仅将图像添加到按钮而不是为每个项目绘制按钮来构建工具栏按钮,即绘制边框和图标。

    任何帮助都会非常感激,因为这让我有点疯狂。

    提前致谢 - AYAL

3 个答案:

答案 0 :(得分:9)

事实证明,这个问题的答案比我预期的要简单得多。经过大量的牙齿咬牙切齿,拔毛,以及摆弄像素,我遇到了解决方案。

我不必使用“推送”按钮,而只需切换到“圆形纹理”按钮。一旦我这样做,我添加到按钮的任何图像都很好地居中。接下来,我只需手动缩放图像即可。

Mail.app工具栏的配方如下:

  1. 向工具栏添加按钮
  2. 将按钮样式设置为“圆形纹理”
  3. 设置按钮的图像
  4. 将位置设为'NSImageOnly'
  5. 将按钮大小设置为40 x 25以及ToolbarItem的最小和最大大小
  6. 结果是一个工具栏,看起来与Mail.app工具栏非常相似。

    全部谢谢 - AYAL

答案 1 :(得分:0)

一种方法是让你的图像实际上是按钮,即占用按钮的所有画布。您将不得不使用按钮的setBordered:方法,因此不会绘制按钮的边框。

答案 2 :(得分:-3)

你可以在像gimp或photoshop这样的按钮图像中使用它作为按钮的背景或图像。

我觉得你会说“这就是我在做什么”。也许你制作了小邮件图标,但我的意思是你制作整个按钮,大纲和所有内容,然后将其用于按钮图像。有意义吗?

就像这里一样,只需使用它作为背景 enter image description here