Анимировать два вида, например, когда вы передаете телефонный звонок - PullRequest
0 голосов
/ 01 октября 2011

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

Я не могу добиться этого эффекта, это всегда так себе. Там, кажется, эффект масштаба, с действием на непрозрачность, но ...

Знаете ли вы, как это можно сделать, чтобы отразить этот эффект (не так, у меня их много)?

1 Ответ

0 голосов
/ 01 октября 2011
 // Make this interesting.

 [UIView beginAnimations:nil context:nil];
 [UIView setAnimationDuration:2.0];
 [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
 [UIView setAnimationDelegate:self]; 
 [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
 self.view.alpha = 0.0;
 self.view.frame = CGRectMake(self.view.center.x,self.view.center.y , 0, 0);
 [UIView commitAnimations];
}

Надеюсь, это каркас для лучшей анимации. Это не гарантировано, но это лучшее, что я мог придумать для первой части перехода.

Это изменит кадр вида вашего контроллера представления так, чтобы он «засасывал» себя в центр экрана, который имеет естественный черный цвет. Теперь, когда я думаю об этом, CGAffineTransform был бы намного проще ...

EDIT (ради педантизма): начиная с iOS 4, теперь вы можете использовать более новые и намного более синтаксически чистые блоки анимации и приятное преобразование:

[UIView animateWithDuration:0.25 delay:0.0 options:0 animations:^{
     //animate the toolbars in from the top and bottom
     [myTopView setFrame:CGRectMake(0, self.view.frame.size.height - 44, self.view.frame.size.width, 44)];
     [myBottomView setFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     //fade to black...
     self.view.alpha = 0.0;
     //and suck inwards.
     self.view.frame = CGRectMake(self.view.center.x,self.view.center.y , 0, 0);
}
completion:^{
    //do something to end nicely, or start another animation block.
}];
...