Анимация вида поверх другого вида - PullRequest
1 голос
/ 06 августа 2009

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

Как бы я это сделал?

1 Ответ

5 голосов
/ 06 августа 2009

Просто добавьте вид где-нибудь за пределами видимой рамки суперпредставления (вид, над которым вы анимируете), затем измените его положение, используя блок анимации. Это будет скользить вверх.

- (void)addView
{
    // Obviously this won't compile with cut&paste... you have
    // to supply the actual views.
    UIView* myControlView = // assume this exists somewhere
    UIView* myMainView    = // assume this exists too
    myControlView.frame   = CGRectMake(0, 480, 320, 100); // use real numbers
    [myMainView addSubview:myControlView];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    myControlView.frame   = CGRectMake(0, 380, 320, 100);
    [UIView commitAnimations];
}

Существует также ряд других способов сделать это. Например, вы можете установить представление точно там, где вы хотите, а затем перевести его за пределы экрана, чтобы «спрятать» его. Когда вы хотите, чтобы он вернулся, преобразуйте его снова с помощью аффинного преобразования внутри блока анимации, и он снова сдвинется вверх. Этот способ работает немного лучше с предварительно подготовленными представлениями, например, с использованием Interface Builder и где вы не обязательно знаете, каковы положения фрейма, или они могут быть изменены в другом коде.

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