2010-06-22 75 views
2

我在尋找的是用CA動態佈局窗口的一種方法。想象一下在窗口中的下列SQL查詢,+ PLUSSIGNS +之間的每個名稱都是NSPopUpButton,rest是靜態文本。使用核心動畫在可可中動態佈局窗口並填充它

選擇*
從+捲餅/ TACOS1 + +和/ OR 1 +
+捲餅/ TACOS2 + +和/ OR 2 +

+ TOPPING1 + + EQUALS/LT/GT1 + + TOPPINGLIST1 + +和/ OR 3 +
+ TOPPING2 + OK:所以窗口開始顯示「Select *」和「from」純文本標籤,而BURRITOS/TACOS1選擇爲「 - 」而不是有效值。

當我將BURRITOS/TACOS1設置爲有效值(BURRITOS)時,我希望AND/OR1 NSPopUpButton出現,選擇爲「 - 」。我也想要出現「Where」標籤,我想要出現「TOPPING1」「EQUALS/LT/GT1」「TOPPINGLIST1」。所有這3個將被選爲「 - 」。

當我將AND/OR1設置爲有效值(AND或OR)時,我想讓BURRITOS/TACOS2出現。如果我將它選爲某個值,我想要顯示AND/OR2。如果我將其設置爲一個值,我想BURRITOS/TACOS3出現....

如果我設置TOPPING1,EQUALS/LT/GT1和TOPPINGLIST1爲有效值我想AND/OR3出現(如「 - 「)。如果我將AND/OR3設置爲有效值,我想要出現TOPPING2,EQUALS/LT/GT2,TOPPINGLIST2。如果我將它們設置爲有效值,我想要AND/OR4出現...

如果例如AND/OR3設置爲 - 並且它下面有一行,我希望整行消失。

在整個窗口的底部,我總是需要一個靜態複選框「enable」。我還想要一個左右箭頭按鈕 - 單擊左側將使整個窗口「向左」翻轉。單擊右鍵將使整個窗口「向右」翻轉以查詢新的查詢。

我希望這些新的NSPopUpButton看起來類似於Mail.app,其中CC BCC等的新文本條目基於您使用該選取器控件的設置顯示。

+0

您的問題過於寬泛,無法簡明回答。我建議把它分解成單獨的問題(編輯這個問題以提高其重點,然後添加其他問題,每個問題都集中在你試圖學習的具體點上)。換句話說,「分解它」。 – 2010-06-22 14:01:02

+0

我從我的問題中脫離了一小部分 - 但是從過去的經驗來看,如果我將其分解,我無法傳達上下文,我可能會浪費每個人的時間和無益的答案。也許它不能簡潔地回答,但它確實有一個特定的正確答案。如果有人想簡潔地回答,他們可以說「使用CA,爲整個窗口和每個區域設置一個圖層,在該圖層內部有這個和那個,不要使用IB ..」我會給你一個更好的答案,但是我不知道我的問題的答案 – Nektarios 2010-06-22 17:32:50

回答

0

結束這是真正的2個問題。

1 - 窗口的動態佈局。在最簡單的方法,這是通過把一個的NSView在一個NSWindow,然後使用一個NSView的addSubview ..例如做:

NSRect rect = NSMakeRect(0, y, 100, 10); 
NSButton *button = [[NSButton alloc] initWithFrame:rect]; 

y += 15; 
[topView addSubview:button]; 

這裏的NSButton是把每15個像素的視圖中。請注意,y必須由我來維護,不是自動的。如果我們超出了我們的NSView邊界,我們也必須自己管理這個大小。

2 - 動畫這個過渡。使用Core Animation不是那麼聰明,更合理的路線是NSAnimation,特別是NSViewAnimation。有一個很好的例子,感謝Apple here。爲了我的目的,我需要使用它來調整大小並移動NSViews。此外,如果我想要一個按鈕「淡入」我可以做的是複製NSView,保持爲「舊」,修改我的NSView,並淡入淡出。

...感謝freenode上的#cocoa ..