2009-11-12 66 views
1

類似我想開一個覆蓋窗口(彈出窗口)當用戶在我NSTableView類似選擇在iCal事件選擇小區。在iCal中選擇事件會顯示一個窗口來編輯事件,但通過平滑地將窗口動畫化並添加指向底層日曆中的箭頭的箭頭來實現。有人知道這裏使用了什麼嗎?這是一堆隱藏/自定義API還是可供公衆使用?可可彈出窗口到iCal

回答

6

編輯窗格似乎是一個自定義的無邊框,具有自定義視圖透明窗口(視圖定義形狀並因此定義它投射的陰影)。瞭解更多信息here。你甚至可以使用MAAttachedWindow

關於動畫,這是因爲詢問窗口的動畫的動畫幀和α值(分組在一起)一樣簡單。您可能首先想要直接在「開始位置」設置所有內容(即,當窗口在屏幕外時,將其alpha設置爲零,並將其幀設置爲較小的版本,以便「放大」la iCal ),然後把它在屏幕上,並開始分組的動畫:

[NSAnimationContext beginGrouping]; 
[[window animator] setFrame:someNewSlightlyLargerFrame]; 
[[window animator] setAlphaValue:1.0]; 
[NSAnimationContext endGrouping]; 

一旦分組結束,動畫將開始(異步)和你的代碼將繼續執行。需要思考的是首先讓所有的東西「上演」(包括確保你的窗口的子視圖事先已經更新,所以它們不會在你的動畫中間發生變化......除非你想要它們)。

所以你需要了解的兩個獨立技術是一個自定義窗口和基本的可可動畫。

+0

非常感謝你們,MAAttachedWindow的鏈接也很讚賞,那裏有一些很棒的東西。 – MarkPowell 2009-11-12 18:58:18

1

你是否在談論甚至從iCal應用程序底部的列表中選擇?

不知道你是指什麼來,但有一個時間跨度內的動畫轉換的API。

綜觀其他蘋果的應用程序,蘋果的開發利用提供給其他人相同的API(主要是我猜的)。有很多東西是可定製和蘋果定製任何需要,直到它看起來正確的,從設計的角度來看...

4

如果您正在使用OSX 10.7及以上,NSPopover會做你找的工作。

+0

這裏是一個[教程](http://www.youtube.com/watch?v=P6HX0K7ulSY) – fengxing 2013-06-09 05:22:06