为两个视图设置动画,例如通过电话时

时间:2011-10-01 01:27:00

标签: iphone cocoa-touch animation uiview core-animation

我做了很多次尝试,以获得与拨打电话号码时相同的切换效果:前视图取消了缩放效果,而另一个也出现了缩放效果。

我无法实现这种效果,它始终是如此。似乎有一个规模效应,对不透明度采取行动,但......

你知道如何做到这一点来反映这种影响(不是马马虎虎,我有很多这样的影响)?

1 个答案:

答案 0 :(得分:-1)

 // 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会更容易......

编辑(为了迂腐):从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.
}];