2013-04-22 62 views
0

我遇到下面的代碼問題。當我執行它時,有一個未定義延遲首先[CATransaction commit]CompletionBlock:。不知道那裏發生了什麼。只有當應用在設備上運行時纔會發生這種情況。未定義的延遲問題的ipad視圖動畫

這是時間日誌,

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設置動畫。所以現在這個未定義的問題已經修復。