2013-04-22 3 views
0

У меня проблема со следующим кодом. Когда я его выполню, существует неопределенная задержка с первым [CATransaction commit] и CompletionBlock:. Не знаю, что там происходит. Это происходит только тогда, когда приложение запускается на устройстве.Неопределенная проблема с задержкой ipad views animation

Это журнал время,

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 

-

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"); 

ли я ошибаюсь некоторые вещи ?? Пожалуйста помоги.

ответ

0

Как я понял, CATransaction создает мгновенные снимки, которые я оживляю. Таким образом, для этого требуется некоторое время, и из-за этого возникает некоторая задержка.

Так как решение теперь я оживляю UIImageView с снимком снимка снимка. Так что теперь неопределенная проблема была исправлена.

Смежные вопросы