2012-01-31 59 views
4

在Interface Builder組件我有漸變按鈕NSButton漸變樣式

Gradient Button

我想以編程方式創建這個按鈕。但我無法找到按鈕類型,邊框樣式和漸變類型的組合來重現它。我當地的目標是創建加(添加)和減號(刪除)按鈕,這樣

Add and remove items, gradient button

可能是你還可以知道如何在零下的正確實施的一部分?它看起來像禁用漸變按鈕。

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

我把梯度按鈕空廈門國際銀行,廈門國際銀行開用文本編輯器,找到我的按鈕。這是代碼的一部分。

<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> 

我會嘗試使用此信息重現按鈕。

回答

8

OMG,我是失明的。只需將邊框樣式設置爲NSSmallSquareBezelStyle並將按鈕 鍵入NSMomentaryPushInButton即可。

我不需要圖像。我不需要使用CoreGraphics進行自定義繪製(我爲此做了自己的課)。我不需要解析xib。我不需要轉儲運行時結構(我這樣做是爲了找到用xib創建的出口到漸變按鈕中的字段值)。我不得不嘗試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

0

我相信你所引用的按鈕是一個自定義按鈕,可能是一個自定義背景圖片,儘管它當然可以通過程序創建。這些類型的按鈕的問題是,該按鈕有幾個變種,看起來非常相似,但略有不同。

創建這些按鈕的最簡單方法是使用漸變按鈕並將Xcodes股票圖標上的+和 - 圖像拖動到它們上。否則,你可能想要尋找一個看起來像你想要的自定義NSButton。我相信有一些開放源代碼的程序有這些,但我無法記住它們,直到我的頭頂。

+0

謝謝你,柯林。有時候圖像是最好的解決方案。但我想明白,爲什麼我可以從IB創建漸變按鈕,而不能從代碼創建。 – alexchernyy 2012-02-01 11:01:44

+0

你應該能夠,但正如我所指出的,如果你想要一個自定義按鈕完全匹配,那麼你將花費時間通過手動繪製或使用匹配按鈕外觀的圖像來以編程方式重新創建它試圖匹配。 – 2012-02-01 14:56:15

+0

好的,我無法從上面的xib代碼中重現漸變按鈕。我認爲科林是對的 - 圖像是最簡單的方法。 – alexchernyy 2012-02-06 08:27:35