Как отобразить просмотр с анимацией

Скажем, у меня есть скрытый вид в Xcode для iOS. Теперь, когда я установил представление не скрытым (view.hidden = NO), как я могу сделать его так, чтобы он теперь появился, но с анимациями?

Ответы

Ответ 1

Возможно, вам нужно не устанавливать view.hidden, а установить view.alpha в 0 (соответствует hidden = YES) или 1 (hidden = NO).

Затем вы можете использовать неявные анимации, чтобы показать представление, например

[UIView animateWithDuration:0.3 animations:^() {
    view.alpha = 1.0;
}];

Ответ 2

Если вы хотите другие анимации, а не только затухание, используйте этот метод

[UIView transitionWithView:_yourView duration:1.0 options:UIViewAnimationOptionTransitionCurlDown animations:^(void){

            [_yourView setHidden:NO];

        } completion:nil];

Ответ 3

Для выцветания вы можете настроить альфа-свойство представления.

myView.alpha = 0;
[UIView animateWithDuration:0.5 animations:^{
    myView.alpha = 1;
}];

Это приведет к постепенному исчезновению более чем за 0,5 секунды до представления myView. Многие свойства UIView являются анимированными; вы не ограничиваетесь только альфа-замиранием. Вы можете менять цвета фона или даже поворачивать и масштабировать вид с анимацией. Если вам нужен дополнительный контроль и расширенная анимация, вы можете перейти в Core Animation - гораздо более сложную структуру анимации.

Ответ 4

-(void)showView{

  [UIView beginAnimations: @"Fade Out" context:nil];
  [UIView setAnimationDelay:0];
  [UIView setAnimationDuration:.5];
  //show your view with Fade animation lets say myView
  [myView setHidden:FALSE];
  [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(hideView) userInfo:nil repeats:YES];

  [UIView commitAnimations];
}


-(void)hideView{
  [UIView beginAnimations: @"Fade In" context:nil];
  [UIView setAnimationDelay:0];
  [UIView setAnimationDuration:.5];
  //hide your view with Fad animation
  [myView setHidden:TRUE];
  [UIView commitAnimations];
}

ИЛИ вы можете попробовать таким образом

self.yourView.alpha = 0.0;
[UIView beginAnimations:@"Fade-in" context:NULL];
[UIView setAnimationDuration:1.0];
self.yourView.alpha = 1.0;
[UIView commitAnimations];