NSButton渐变风格

时间:2012-01-31 09:51:20

标签: macos cocoa gradient nsbutton

在Interface Builder组件中,我有Gradient Button

Gradient Button

我想以编程方式创建此按钮。但我找不到按钮类型,边框样式和渐变类型的组合来重现它。我的本地目标是创建像这样的加号(添加)和减号(删除)按钮

Add and remove items, gradient button

也许你也可以知道如何在减号右边实现部分?它看起来像禁用渐变按钮。

更新(2012-02-01,14:52)

我在空xib上放置渐变按钮,用文本编辑器打开xib并找到我的按钮。这是代码的一部分。

<array class="NSMutableArray" key="NSSubviews">
  <object class="NSButton" id="155381693">
    <reference key="NSNextResponder" ref="1005"/>
    <int key="NSvFlags">268</int>
    <string key="NSFrame">{{20, 303}, {106, 23}}</string>
    <reference key="NSSuperview" ref="1005"/>
    <reference key="NSWindow"/>
    <string key="NSReuseIdentifierKey">_NS:2466</string>
    <bool key="NSEnabled">YES</bool>
    <object class="NSButtonCell" key="NSCell" id="976550657">
      <int key="NSCellFlags">-2080244224</int>
      <int key="NSCellFlags2">134217728</int>
      <string key="NSContents">Gradient Button</string>
      <object class="NSFont" key="NSSupport">
        <string key="NSName">LucidaGrande</string>
        <double key="NSSize">13</double>
        <int key="NSfFlags">1044</int>
      </object>
      <string key="NSCellIdentifier">_NS:2466</string>
      <reference key="NSControlView" ref="155381693"/>
      <int key="NSButtonFlags">-2033434369</int>
      <int key="NSButtonFlags2">162</int>
      <string key="NSAlternateContents"/>
      <string key="NSKeyEquivalent"/>
      <int key="NSPeriodicDelay">400</int>
      <int key="NSPeriodicInterval">75</int>
    </object>
  </object>
</array>

我将尝试使用此信息重现按钮。

2 个答案:

答案 0 :(得分:8)

天啊,我是个盲人。只需将挡板样式设置为NSSmallSquareBezelStyle和按钮即可 输入NSMomentaryPushInButton。

我不需要图像。我不需要使用CoreGraphics进行自定义绘制(我为此做了自己的课程)。我不需要解析xib。我不需要转储运行时结构(我这样做是为了找到在出口中使用xib创建的渐变按钮的字段的nessesuary值)。我必须尝试documentation的所有挡板样式值。但是如果您在文档中阅读NSSmallSquareBezelStyle的描述,您就会理解我的困惑:它与IB向导中的“渐变”值相差甚远。

enter image description here

正确的代码:

NSButton *gradientButton = [[NSButton alloc] initWithFrame:NSMakeRect(40, 40, 80, 32)];
[gradientButton setButtonType:NSMomentaryPushInButton];
[gradientButton setBezelStyle:NSSmallSquareBezelStyle];
[gradientButton setTitle:@"Title"];
[self.window.contentView addSubview:gradientButton];

结果:

enter image description here

答案 1 :(得分:0)

我相信你引用的按钮是一个自定义按钮,可能是一个自定义背景图像,虽然它当然可以通过编程方式创建。这些类型的按钮的问题是,该按钮的几个变体看起来非常相似,但有轻微差异。

创建这些按钮的最简单方法是使用渐变按钮并将来自Xcodes股票图标的+和 - 图像拖到它们上面。否则,您可能想要四处寻找看起来像您想要的自定义NSButton。我相信已经有一些开源程序有这些,但我不记得它们就在我的头顶。