這些日子似乎越來越多的OS X應用程序正在爲自定義控件做各種各樣的花哨的繪圖東西。像Twitterific應用,物聯網,事件盒,版本只是僅舉幾例....尋找界面組件(可可)的自定義繪圖信息
所以基本上我正在尋找關於如何開始做這種事情的任何信息。不確定是否僅僅通過繼承控件和使用自定義繪圖來完成,還是完全不同。
任何幫助,非常感謝。謝謝!
這些日子似乎越來越多的OS X應用程序正在爲自定義控件做各種各樣的花哨的繪圖東西。像Twitterific應用,物聯網,事件盒,版本只是僅舉幾例....尋找界面組件(可可)的自定義繪圖信息
所以基本上我正在尋找關於如何開始做這種事情的任何信息。不確定是否僅僅通過繼承控件和使用自定義繪圖來完成,還是完全不同。
任何幫助,非常感謝。謝謝!
這完全取決於你想要做什麼。
的版本,例如「顯示原始屬性」按鈕是NSButton子類,因爲基本上我們需要的是我們自己的外觀標準按鈕行爲。子類按鈕的一種方法是簡單地在NSButton子類中實現自己的-drawRect:(NSRect)rect方法,但我們決定堅持NSButton在Cocoa中實現的方式,這意味着大多數繪圖都是由按鈕的單元格完成的,所以實施看起來是這樣的:
在NSButton子類:
+ (Class) cellClass
{
return [OurButtonCell class];
}
- (void)drawRect:(NSRect)rect
{
// first get the cell to draw inside our bounds
// then draw a focus ring if that's appropriate
}
在NSButtonCell子類(OurButtonCell):
- (void)drawInteriorWithFrame: (NSRect) rect inView: (NSView *) controlView
{
// a bunch of drawing code
}
在版本的時間線視圖實際上是一個web視圖,該頁面你看到它使用JavaScript t o點擊摺疊標題。
拇指我用在何處使用自定義控制開始時的規則是:
推薦閱讀學習如何在自己的自定義視圖的畫法畫的東西:Cocoa Drawing Guide
定製的,例如一個NSTableView是茶的完全其它杯子的外觀,由於複雜性的桌面視圖,這可以發生在整個地方。您將爲您想要在表中執行的某些操作實現自定義單元格,但必須更改行在實際NSTableView對象本身的子類中突出顯示的方式。例如,請參閱Matt Gemmell's site上的iTableView的源代碼,以獲取繪製內容的清晰示例。
最後,我認爲Abizer的建議去檢查BWToolkit的代碼是一個好主意。起初它可能有些壓倒性的,但如果你能夠閱讀並理解這些代碼,你就不會遇到實現你自己的自定義視圖和控件的麻煩。
看一看一些很好的例子代碼:BWToolkit
良好的寫作德克。讓我覺得我一直很懶惰;-) – Abizern 2008-12-19 16:04:32