2011-03-05 29 views
0

嗨,我還沒有找到一個答案,所以我想我會問你。可可觸摸 - UIAnimation問題

[viewOggetto setFrame:aFrame]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 
[self.view addSubview:viewOggetto.view]; 
[UIView commitAnimations]; 

這是一個簡單的動畫視圖出現在一個位置,然後進入全屏模式。 我的問題是:我怎樣才能使視圖的內容也遵循動畫? 現在我有視圖框架正確動畫,但視圖內的所有內容都會立即全屏顯示。

謝謝。

+0

'aFrame'是一種我不熟悉的方法。你確定你不是指'[viewOggetto setFrame:aFrame];'? –

+0

Oggetto是意大利人吧?你不認爲爲你的變量設置英文名稱而不是混合英語和意大利語會很好嗎? –

+0

你對你的第一條評論是正確的,我的意思是[viewOggetto setFrame:aFrame];也是的,Oggetto是一個意大利名字,但它是我正在使用的上下文所必需的。 – Lorenzo

回答

0

但什麼viewOggetto究竟是什麼?如果它是一個UIView,那麼爲什麼要調用viewOggetto.view?

是一個UIViewController? 您通話雙方:

[viewOggetto setFrame:aFrame]; 
[viewOggetto.view setFrame:aFrame]; 

假設它是一個UIViewController,試試這個/ PROVA COSI':

[self.view addSubview:viewOggetto.view]; // you need to have it before to animate it 

// initial state of the animation: 
[viewOggetto.view setFrame:CGRectMake(160, 240, 1, 1)]; // zoom from center 
// viewOggetto.view.alpha = 0; // eventually to add a fadeIn animation 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
// ending state of animation: 
// viewOggetto.view.alpha = 1; // restore to 1 to eventually to add a fadeIn animation 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 

[UIView commitAnimations]; 

,如果它是一個UIView只是刪除 「.view」 在每一個 「viewOggetto.view」 代碼

ciao, luca

+0

grazie盧卡。我試過你發佈的代碼,但沒有任何改變。我仍然可以正確動畫,但在動畫過程中內容不會相應地調整大小。也許問題可能是我正在使用NIB文件初始化viewOggetto? – Lorenzo

2

這不是完全清楚你希望發生的事情,而不是它瞬間出現全屏什麼。你的意思是你想讓它淡入?在子視圖alpha屬性設置爲0並將其添加到您self.view啓動動畫之前。然後在動畫中將alpha屬性設置爲1。

+0

沒有。我最初設置一個較小的框架:[viewOggetto aFrame];那麼我希望視圖在0.5秒內全屏顯示。但隨着我發佈的代碼,我得到視圖的框架行爲正確,但視圖的內容不遵循這種「縮放」動畫,只是全屏。我想知道如何讓內容跟隨動畫。 – Lorenzo

+0

在開始動畫之前添加子視圖的初始幀。 – Jim

+0

對不起,我寫錯了我的代碼。第一條指令是[viewOggetto setFrame:aFrame];(現在編輯它)。也許現在你明白我的意思了。 – Lorenzo

0

只想補充吉姆的回答。 UIView動畫將UIViews從一個上下文動畫化到另一個上下文。如果上下文在[UIView beginAnimations:nil context:NULL];之前不存在,則底面效應將發生。如果視圖尚未添加到子視圖中,則上下文將不存在。

+0

我編輯了代碼;第一行應該是[viewOggetto setFrame:aFrame]; – Lorenzo

+0

這不會改變任何東西。如果在您調用beginAnimation時它不在屏幕上,它將無法動畫。在您調用beginAnimation – Rudiger

+0

之後,您正在將視圖添加到屏幕。實際上動畫正在運行。我的問題是隻有視圖的框架受制於動畫。視圖中的內容(UILabels等)在動畫期間在屏幕上被觸發。我想知道如何根據視圖的框架對內容進行動畫處理。 – Lorenzo