2012-03-15 70 views
0

我正在動畫化的UIImageView與增長和衰落一個圓,重複的圖像:動畫一圈成長

-(void)animateOuterCircle 
{ 
    NSLog(@"animating circles"); 
    [UIView animateWithDuration:1.5 
          delay:.5 
         options:(UIViewAnimationOptionAllowUserInteraction) 
        animations:^{ 
         self.outerCircle.transform=CGAffineTransformMakeScale(.25, .25); 
        } 
        completion:nil]; 


    [UIView animateWithDuration:1.5 
          delay:.5 
         options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction) 
        animations:^{  
         self.outerCircle.transform=CGAffineTransformMakeScale(1.5, 1.5); 
         self.outerCircle.alpha = 0; 
        } 
        completion:nil]; 

    [self.view bringSubviewToFront:self.outerCircle]; 
} 

我調用viewDidAppear這個方法:

- (void)viewDidAppear:(BOOL)animated 
{   
    [self performSelectorOnMainThread:@selector(animateOuterCircle) withObject:nil waitUntilDone:NO]; 

    //other code 
} 

它將動畫很好,當我加載mainView。問題是我加載view2並關閉view2,當我回到mainView,它不再是動畫。

任何想法爲什麼會發生這種情況?

編輯:方法被稱爲:

2012-03-15 14:11:13.946[1529:17903] view2 canceled //dismissing view2 
2012-03-15 14:11:13.947[1529:17903] mapView viewWillAppear fired 
2012-03-15 14:11:13.948[1529:17903] mapView viewWillAppear end 
2012-03-15 14:11:14.352[1529:17903] mapView viewDidAppear fired 
2012-03-15 14:11:14.353[1529:17903] animating circles 
2012-03-15 14:11:14.354[1529:17903] mapView viewDidAppear end 

編輯2:

-(IBAction) fourthBtn:(id)sender 
{ 
    view2 *view2 = [self.storyboard instantiateViewControllerWithIdentifier:@"view2"]; 
    [self presentModalViewController:view2 animated:YES];  
} 

駁回觀點2:

-(IBAction) cancel:(id) sender 
{  
    NSLog(@"heir canceled"); 

    [self dismissModalViewControllerAnimated:YES]; 
} 

另外,我不停止自己的動畫在我的代碼中的任何一點。

+0

也許'viewDidAppear'沒有被調用?顯示視圖切換代碼。 – 2012-03-15 17:49:48

+0

viewDidAppear甚至被稱爲?你自己加載view2時是否停止動畫? – Brodie 2012-03-15 17:50:53

+0

viewDidAppear確實被調用,animateOuterCircle確實被調用。 – Padin215 2012-03-15 19:12:32

回答

0

我重新做了一些代碼;

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [self.outerCircle removeFromSuperview]; 
    [self.innerCircle removeFromSuperview]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    self.innerCircle = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"inner-circle.png"]]; 
    self.innerCircle.frame = CGRectMake(self.innerCircle.frame.origin.x, self.innerCircle.frame.origin.y, 30, 30); 

    self.outerCircle = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"outer-circle.png"]]; 
    self.outerCircle.frame = CGRectMake(self.outerCircle.frame.origin.x, self.outerCircle.frame.origin.y, 40, 40); 

    [self.view insertSubview:self.innerCircle belowSubview:HUD]; 
    [self.view insertSubview:self.outerCircle belowSubview:HUD]; 

//other code 
} 

隨着這些變化,它的行爲就像我想要的一樣。

我認爲這與嘗試第二次激活outerCircle有關(它已經從第一個viewDidAppear開始動畫,並且當第二次調用viewDidAppear時,它會重新激活一個已經有動畫的圖像,然後將它製作成borked完全)。

0

我的猜測是viewDidAppear沒有被調用,因爲從該視圖來看,它永遠不會消失。

根據你如何創建和顯示view2,當你關閉它時,這會在view2內工作嗎?

[parentViewController viewDidAppear:YES]; 
+0

viewDidAppear正在被調用,我的動畫方法正在被調用;它只是沒有做動畫。 – Padin215 2012-03-15 19:11:59

+0

你能告訴我們你是如何呈現然後解散view2? – Brodie 2012-03-15 19:59:55

+0

出於好奇 - 嘗試更改外圓的顏色,以查看它是否仍被引用。如果沒有,那麼也許它不會被正確保留/引用。你如何創建外圈? – Brodie 2012-03-16 15:53:28