2010-08-04 23 views
1

我想構建一個自定義控件,它可以像這樣工作: 您有一種帶圖像的NSButton。 你點擊按鈕,然後出現一個帶有網格照片的大廣場。 您點擊其中一張照片,並將其設置爲按鈕的新圖像。 (square dissapears)可可:自定義控件不限於窗口框架 - 如何開始?

現在,如果我不希望它被限制到窗口框架,如何繪製這張大方形的照片? 我的意思是,如果按鈕靠近窗口邊界,則正方形將部分位於窗口外部。我還想爲廣場添加一些陰影,併爲開啓/關閉添加動畫。

一件重要的事情是:我希望不僅能繪製正方形,還能繪製任何其他簡單形狀(圓圈)!

回答

1

這不是一個真正的繪畫問題,而是一個普通的自定義視圖問題。做出這種區分很重要。

我會用矩形來描述這個,給你一般的想法*。您應該確保您瞭解Cocoa中的view hierarchyview geometry。如果沒有這些重要的必要知識,你就會死在水中。

設置NSButton的圖像很容易,所以我會把它留給你。但是,按鈕的動作會告訴某個控制器顯示給定按鈕的「圖像選擇器」。您的圖像選擇器將是某種類型的borderless window,其中包含圖像列表。圖像選擇器可以是IKImageBrowserView(您必須啓用Interface Builder中的圖像工具包才能顯示此控件),從而爲您提供類似iPhoto的圖像網格(帶/不帶標題,不同邊框類型等)。

對這個控制器的操作以及它如何創建窗口,管理選擇和設置按鈕圖像的解釋是非常廣泛的所以如果你在任何這些步驟中掛斷,你需要創建一個單獨的問題,每個問題,否則這個答案將不得不是一個指導手冊爲你寫你的應用程序。


*您的問題,是因爲你渴望擁有不同形狀的「彈出窗口」的有些困難......你必須確保你可用的照片完全吻合的形狀,因此沒有人內被切斷。用視圖幾何的基本知識武裝起來,我會把它留給你作爲練習。提示:您可以使用無邊界透明窗口來託管一個在any shape you please中自己繪製的視圖。

+0

有兩件事:1.值得一提的是,彈出窗口應該是包含按鈕的窗口的子窗口。這使得它在自動移動期間跟隨父窗口,並將它們放在Exposé中。 2.有一種情況可能需要*切斷圖像:切斷最後一個可見行意味着該列表是可滾動的。這在Mac上並不重要(因爲您有可見的滾動條),但是我仍然偶爾會錯過摺疊內容以下內容的網頁上的滾動條,因此即使在Mac上也值得考慮。 – 2010-08-05 03:46:09

相關問題