我有2个子视图需要整个屏幕(除了状态栏)。我们称这个尺寸为“屏幕尺寸”。iPhone - 同时动画2个子视图
欲动画两者:
从一点点比屏幕尺寸与屏幕尺寸较大,以放大所述第一,从阿尔法0到1的α
从第二屏幕尺寸略小于屏幕尺寸,从alpha 1到alpha 0.
第二个视图是可见的,并在屏幕上开始。
我写了这个:
- (void) switchViews
{
if (self.view2Controller == nil) {
self.view2Controller = [[View2Controller alloc] initWithNibName:@"View2XIB" bundle:nil];
self.view2Controller.view.hidden = YES;
[self.view addSubview:self.view2Controller.view];
}
CGRect bigFrame = CGRectInset(self.view.frame, -50, -50);
CGRect normalFrame = self.view.frame;
CGRect smallFrame = CGRectInset(self.view.frame, 50, 50);
self.view2Controller.view.frame = bigFrame;
self.view2Controller.view.alpha = 0.0;
[UIView beginAnimations:@"Anim1" context:nil];
[UIView setAnimationDuration:5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
self.view2Controller.view.hidden = NO;
self.view2Controller.view.frame = normalFrame;
self.view2Controller.view.alpha = 1.0;
[UIView commitAnimations];
// ------------------------------
[UIView beginAnimations:@"Anim2" context:nil];
[UIView setAnimationDuration:5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
self.view1Controller.view.frame = smallFrame;
self.view1Controller.view.alpha = 0.0;
[UIView commitAnimations];
}
当然,我第一次尝试把两个动画成一个独特的一个。这不会改变任何事情,这就是我试图将它们分开的原因。
启动时,view1立即变为黑色,然后view2按预期开始动画。但我无法同时运行两个动画。
我该怎么做?
呃......你在开玩笑吗?我会尽量隔离你今晚做的代码。 :-) – Oliver
啊啊......对不起,但是不......你的搜索字段比你发送的代码大一点......试试我隔离的代码(查看新的编辑答案) – meronix