2011-05-20 96 views
4

我有一個問題淡出我的子視圖。我沒有任何麻煩,只能淡化視野。子視圖淡入和淡出幫助

-(void)flipToReview { 
ReviewViewController *reviewVariable = [[ReviewViewController alloc] initWithNibName:@"ReviewViewController" bundle:nil]; 
[self setReviewViewController:reviewVariable]; 
self.ReviewViewController.view.alpha =0; 
[UIView beginAnimations:@"flipview" context:nil]; 
[UIView setAnimationDuration:0.3]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:_window cache:YES]; 
[reviewVariable release];  
[self.window addSubview:self.ReviewViewController.view]; 
self.ReviewViewController.view.alpha =1; 

[UIView commitAnimations]; 
} 


-(void)flipBackFromReview { 
// self.ReviewViewController.view.alpha = 1; 

[UIView beginAnimations:@"trip" context:nil]; 
[UIView setAnimationDuration:0.3]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 

[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:_window cache:NO]; 
self.ReviewViewController.view.alpha = 0; 
[self.ReviewViewController.view removeFromSuperview]; 
[UIView commitAnimations]; 
self.window.rootViewController = self.tabBarController; 
[self.window makeKeyAndVisible]; 
[self.ReviewViewController.view setHidden:1]; 
NSLog(@"remove subview"); 
} 

回答

3

您需要移動:

[self.ReviewViewController.view removeFromSuperview]; 

不能在動畫完成 「隨着時間的推移」。你想要做的是將其移動到選擇器並使用setAnimationDelegatesetAnimationDidStopSelector。把你的動畫塊如下:

[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(finshedFadeOut)]; 

然後進行以下方法:

- (void)finshedFadeOut { 
    [self.ReviewViewController.view removeFromSuperview]; 
} 
+0

真棒!謝謝大家!! – BlockReader 2011-05-21 05:53:07

1

我有這個問題,也是,我周圍的方式,它正在改變阿爾法爲0,而不是隻是刪除視圖。這可以是動畫。

+0

@Julian因爲我不能直接評論Julians的回答,所以我會在這裏做。這些^符號在你的代碼中意味着什麼? – sasquatch 2011-05-20 20:44:09

7

嘗試以下操作:

[UIView animateWithDuration:3.0 delay:0.0 
        options:UIViewAnimationOptionAllowUserInteraction 
       animations:^{ ReviewViewController.view.alpha = 0.0;} 
       completion:^(BOOL fin) { 
       if (fin) [ReviewViewController.view removeFromSuperview]; 
       }]; 
+0

我也很好奇這些^符號是什麼意思.. – BlockReader 2011-05-21 06:03:30

+0

這些是塊。塊基本上是可以處理特殊用途的代碼片段(如多任務處理)。查看來自Apple的Dev資源! – Julian 2011-05-21 06:20:52

+0

我真的應該高興這個,因爲你的答案肯定比接受的答案好。 – tonytony 2013-08-07 10:42:44