Динамически раскройте окно в Какао с помощью Core Animation и заполните его - PullRequest
2 голосов
/ 22 июня 2010

То, что я ищу, - это способ CA динамически планировать окно. Представьте себе следующий SQL-запрос в окне, каждое имя которого между + PLUSSIGNS + является NSPopUpButton, остальные - статический текст.

Выберите *
от + BURRITOS / TACOS1 + + AND / OR1 +
+ BURRITOS / TACOS2 + + AND / OR2 +
Где
+ TOPPING1 + + EQUALS / LT / GT1 + + TOPPINGLIST1 + + AND / OR3 +
+ TOPPING2 + + EQUALS / LT / GT2 + + TOPPINGLIST2 + + AND / OR4 +

ОК: окно начинает показывать метки "Select *" и "from" в виде простого текста, а BURRITOS / TACOS1 выбирается как "-" вместо действительного значения.

Когда я устанавливаю BURRITOS / TACOS1 на допустимое значение (BURRITOS), я хочу, чтобы появлялась кнопка AND / OR1 NSPopUpButton, выбранная в «-». Я также хочу, чтобы появился ярлык «Куда», и я хочу, чтобы «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 установлен на - и под ним была строка, я бы хотел, чтобы вся эта строка исчезла.

В нижней части всего окна мне нужен статический флажок «включить», всегда появляется. Я также хочу кнопку со стрелкой влево и вправо - щелчок влево заставит все окно «перевернуться» влево. Если щелкнуть вправо, все окна будут «перевернуты» вправо для новых запросов.

Мне бы хотелось, чтобы эти новые NSPopUpButtons выглядели аналогично Mail.app, где новая текстовая запись для CC BCC и т. Д. Появляется в зависимости от ваших настроек с помощью этого элемента управления средства выбора.

1 Ответ

0 голосов
/ 24 июня 2010

В итоге это действительно 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 пикселей внутри вида. Обратите внимание, что у меня должен быть поддержан, это не автоматически. Если мы выйдем за границы NSView, нам придется самим управлять этим размером.

2 - Анимация этого перехода. Использование Core Animation не так уж умно, более разумный путь - это NSAnimation и, в частности, NSViewAnimation. Вот отличный пример благодаря Apple здесь . Для моей цели мне нужно использовать это, чтобы изменить размер, а также переместить NSViews. Кроме того, если я хочу, чтобы кнопка «исчезала», я могу скопировать NSView, сохранить его как «старый», изменить мой NSView и постепенно переходить между ними.

... благодаря #cocoa на freenode ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...