Подтвердить что ты не робот

Как я могу скрыть вид в окне и из окна в программе Cocoa

Я хочу иметь представление о окне и в ответ на сообщение (щелчок на кнопке или меню). Я хочу, чтобы над ним снижалось другое представление и имело первый размер изображения.

Я хочу перейти от этого:

**********************************
*                                *
*--------------------------------*
*|                              |*
*|        view 1                |*
*|                              |*
*--------------------------------*
*                                *
**********************************

:

**********************************
*                                *
*--------------------------------*
*|        view 2                |*
*--------------------------------*
*--------------------------------*
*|        view 1                |*
*--------------------------------*
*                                *
**********************************

Я не обязательно ищу код, идея о том, с чего начать, будет оценена.

Это для настольного приложения.

4b9b3361

Ответ 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...