在Interface Builder组件中,我有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>
我将尝试使用此信息重现按钮。
答案 0 :(得分:8)
我不需要图像。我不需要使用CoreGraphics进行自定义绘制(我为此做了自己的课程)。我不需要解析xib。我不需要转储运行时结构(我这样做是为了找到在出口中使用xib创建的渐变按钮的字段的nessesuary值)。我必须尝试documentation的所有挡板样式值。但是如果您在文档中阅读NSSmallSquareBezelStyle的描述,您就会理解我的困惑:它与IB向导中的“渐变”值相差甚远。
正确的代码:
NSButton *gradientButton = [[NSButton alloc] initWithFrame:NSMakeRect(40, 40, 80, 32)];
[gradientButton setButtonType:NSMomentaryPushInButton];
[gradientButton setBezelStyle:NSSmallSquareBezelStyle];
[gradientButton setTitle:@"Title"];
[self.window.contentView addSubview:gradientButton];
结果:
答案 1 :(得分:0)
我相信你引用的按钮是一个自定义按钮,可能是一个自定义背景图像,虽然它当然可以通过编程方式创建。这些类型的按钮的问题是,该按钮的几个变体看起来非常相似,但有轻微差异。
创建这些按钮的最简单方法是使用渐变按钮并将来自Xcodes股票图标的+和 - 图像拖到它们上面。否则,您可能想要四处寻找看起来像您想要的自定义NSButton。我相信已经有一些开源程序有这些,但我不记得它们就在我的头顶。