2011-03-07 22 views
1

我搜索了博客和Apple文檔,找不到答案。希望有人可以借用他們的專業知識。iOS UIView過渡,容器視圖創建問題

我有一個簡單的UIView動畫,作用於容器視圖'gameContainer'。如果我用之前調用的方法創建這個容器視圖,那麼一切都很好。

但是,當I(下面的代碼)建立「gameContainer」動畫的呼叫之前立即那麼子視圖「viewGrid」只是出現沒有任何動畫效果。

-(IBAction) onInfoUp: (id) sender { 
    //Add a container UIView for animation  
    [self.view addSubview:gameContainer]; // Moving this line to 'viewDidLoad' cures problem 

    //Call animation methods 
    [UIView beginAnimations:@"newGrid" context:nil]; 
    [UIView setAnimationDuration:1.3]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft 
         forView:gameContainer cache:YES]; 
    [gameContainer addSubview:viewGrid]; 
    [UIView commitAnimations]; 
} 

我很難過,爲什麼我必須在一個單獨的方法中定義子視圖容器!提前致謝。

回答

1

我相信這是由於UIKit如何更新屏幕上的視覺內容。如果在主線程上運行,或者在主線程上的下一個運行循環結束時,則對當前運行循環的所有實際修改都會發生。如果您添加gameContainer,如代碼中所示,它不在屏幕的表示層上。

+0

Cheers @MHC。我認爲它可能與重繪週期有關,但找不到任何參考材料。我試圖在動畫之前執行一個_'setNeedsDisplay'_ call mid-loop,但沒有成功。 – 2011-03-07 20:57:34