Как я могу скрыть вид в окне и из окна в программе Cocoa
Я хочу иметь представление о окне и в ответ на сообщение (щелчок на кнопке или меню). Я хочу, чтобы над ним снижалось другое представление и имело первый размер изображения.
Я хочу перейти от этого:
**********************************
* *
*--------------------------------*
*| |*
*| view 1 |*
*| |*
*--------------------------------*
* *
**********************************
:
**********************************
* *
*--------------------------------*
*| view 2 |*
*--------------------------------*
*--------------------------------*
*| view 1 |*
*--------------------------------*
* *
**********************************
Я не обязательно ищу код, идея о том, с чего начать, будет оценена.
Это для настольного приложения.
Ответы
Ответ 1
CoreAnimation - это, безусловно, лучший выбор. Прошло некоторое время с тех пор, как я работал с любым кодом CA, но что-то вроде:
[UIView beginAnimations:@"slideOn" context:nil];
firstView.frame = shrunkFirstViewRect; // The rect defining the first view smaller frame. This should resize the first view
secondView.frame = secondViewOnScreenFrame; // This should move the second view on the frame.
[UIView commitAnimations];
Позже вы можете вернуться к одному виду, используя:
[UIView beginAnimations:@"slideOff" context:nil];
firstView.frame = normalFirstViewRect; // The rect defining the first view normal frame. This should expand the first view.
secondView.frame = secondViewOffScreenFrame; // Move the second view off the screen
[UIView commitAnimations];
Изменить: приведенный выше код для iPhone, я быстро прочитал ваш вопрос.
На Mac вы хотели бы использовать (аналогично):
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0f]; // However long you want the slide to take
[[firstView animator] setFrame:shrunkFirstViewRect];
[[secondView animator] setFrame:secondViewOnScreenFrame];
[NSAnimationContext endGrouping];
Ответ 2
Следует отметить, что если вы не устанавливаете продолжительность для блока анимации, значение по умолчанию составляет около 0,25 секунды, что на самом деле кажется очень хорошим в большинстве случаев.
Я предлагаю попробовать с этой продолжительностью сначала при экспериментировании с CoreAnimation.
Ответ 3
Я никогда не пробовал, но я думаю, что у CoreAnimation есть интересные возможности для этого. Вы должны анимировать высоту view1 от полной высоты до половины высоты и позиции view2 вне ее супервизора до верхней половины.
Ответ 4
В качестве альтернативы вы можете попробовать NSSplitView...