未定义的ipad视图动画延迟问题
我对以下代码有问题。当我执行它时,第一个未定义的ipad视图动画延迟问题,ipad,ios6,delay,catransition,catransaction,Ipad,Ios6,Delay,Catransition,Catransaction,我对以下代码有问题。当我执行它时,第一个[CATransaction commit]和CompletionBlock:会有一个未定义的延迟。不知道那里发生了什么。只有当应用程序在设备上运行时才会发生这种情况 这是时间日志 2013-04-22 15:59:50.893 MyApp[27038:907] ***** A 2013-04-22 **15:59:50.894** MyApp[27038:907] ***** B 2013-04-22 **15:59:53.161** MyAp
[CATransaction commit]
和CompletionBlock:
会有一个未定义的延迟。不知道那里发生了什么。只有当应用程序在设备上运行时才会发生这种情况
这是时间日志
2013-04-22 15:59:50.893 MyApp[27038:907] ***** A
2013-04-22 **15:59:50.894** MyApp[27038:907] ***** B
2013-04-22 **15:59:53.161** MyApp[27038:907] ***** C
2013-04-22 15:59:53.162 MyApp[27038:907] ***** D
2013-04-22 15:59:53.164 MyApp[27038:907] ***** E
2013-04-22 15:59:53.967 MyApp[27038:907] ***** F
-
我弄错什么了吗??请帮助。我意识到CATTransaction会创建我制作动画的视图快照。因此,这项任务需要一些时间,因此会出现一些延迟 因此,作为一个解决方案,现在我正在使用视图的快照图像设置UIImageView的动画。所以现在这个未定义的问题已经解决了
NSLog(@"***** A");
[CATransaction begin];
[CATransaction setCompletionBlock:^{
[CATransaction begin];
NSLog(@"***** D");
for (UIView *view in [masterTableView subviews])
{
if (view.tag == 501)
{
[view removeFromSuperview];
break;
}
}
[self.view sendSubviewToBack:masterTableView];
[self.view bringSubviewToFront:detailView];
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionPush];
[animation setDuration:.8];
[animation setSubtype:transitionFromRight?kCATransitionFromRight:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[CATransaction setCompletionBlock:^{
NSLog(@"***** F");
for (UIView *view in [detailView subviews])
{
if (view.tag == 502)
{
[view removeFromSuperview];
break;
}
}
[self addDetailView];
[self.view sendSubviewToBack:detailView];
[self.view bringSubviewToFront:masterTableView];
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionPush];
[animation setDuration:.8];
[animation setSubtype:transitionFromRight?kCATransitionFromRight:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[detailView layer] addAnimation:animation forKey:@"transition"];
}];
[[masterTableView layer] addAnimation:animation forKey:@"transition"];
NSLog(@"***** E");
}];
[CATransaction begin];
[CATransaction setCompletionBlock:^{
NSLog(@"***** C");
for (UIView *view in [self.view subviews])
{
if (view.tag == 500)
{
[view removeFromSuperview];
break;
}
}
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionPush];
[animation setDuration:0];
[animation setSubtype:transitionFromRight?kCATransitionFromRight:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[dummyView layer] addAnimation:animation forKey:@"transition"];
}];
[CATransaction commit];
[CATransaction commit];
NSLog(@"***** B");