Как я могу вставить вид в окно и из окна в программе Какао - PullRequest
12 голосов
/ 07 апреля 2009

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

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

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

к этому:

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

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

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

Ответы [ 4 ]

19 голосов
/ 07 апреля 2009

CoreAnimation - определенно ваш лучший выбор. Прошло много времени с тех пор, как я работал с любым кодом CA, но что-то вроде:

[UIView beginAnimations:@"slideOn" context:nil];

firstView.frame = shrunkFirstViewRect; // The rect defining the first view's 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's 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 голосов
/ 10 июля 2009

Следует отметить, что если вы не установили продолжительность для блока анимации, по умолчанию используется значение около 0,25 секунды, что в большинстве случаев работает очень хорошо.

Я советую сначала попробовать эту длительность, когда экспериментируете с CoreAnimation.

1 голос
/ 07 апреля 2009

Я никогда не пробовал, но думаю, что в CoreAnimation есть интересные функции для этого. Вы должны анимировать высоту view1 от полной высоты до половины высоты и положение view2 вне его суперпредставления к его верхней половине.

0 голосов
/ 03 апреля 2013

В качестве альтернативы вы можете попробовать NSSplitView ...

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