2011-07-05 132 views
0
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.30f]; 

[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:viewSettings cache:YES]; 
viewSettings.alpha = 0; 
[viewSettings removeFromSuperview]; 
[UIView commitAnimations]; 

我已經寫了上面的代碼,當我通過動畫添加視圖,但它不起作用,當我從超級視圖中刪除視圖。如果我刪除[viewSettings removeFromSuperview]行,動畫將起作用。我不知道我在做什麼錯。UIView動畫問題

回答

2

動畫完成後,您需要將它從超級視圖中移除。這是很容易做到,如果你使用基於API的塊,蘋果公司鼓勵你做:

[UIView transitionWithView:viewSettings 
        duration:0.30f 
        options:UIViewAnimationOptionTransitionNone 
       animations:^{ 
    [viewSettings setAlpha:0]; 
} completion:^(BOOL finished) { 
    [viewSettings removeFromSuperview]; 
}]; 

您可以在Apple's documentation瞭解所有選項。

+0

THANKSSSSS A TON :) ....但兄弟告訴我你的意思是由基於塊的API?對不起新手在iPhone :) – MGD

+0

塊使您可以打包代碼段(或塊)作爲對象,並傳遞給方法和功能。 [Apple的這個指南](http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/_index.html%23//apple_ref/doc/uid/TP40009758)有很多細節。 – MJeffryes

0

我認爲viewSettings在提交動畫之前被刪除。 嘗試反轉最後兩行。

1

removeFromSuperview不是一個可動畫的動作,所以它立即得到執行。一旦你commitAnimations,你的視圖不再是它的超視圖的一部分,所以你看不到動畫,如果它仍然發生。

如果你希望你的動畫發生,那麼得到去除的觀點,稱removeFromSuperview當動畫結束時,如與setAnimationDidStopSelector:指定的選擇。

1

嘗試在動畫完成後移除視圖。最初視圖的alpha值爲1,然後應用動畫並將其設置爲0.現在視圖仍然存在,但它不可見。一旦動畫結束,然後刪除視圖。我認爲它應該工作。