2009-04-30 60 views
2

我在XCode中創建了一個新的基於視圖的應用程序。CATransaction不動畫

在ViewController中,我已經修改了唯一的代碼如下所示:

- (void)viewDidLoad { 
[super viewDidLoad]; 

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; 
newView.backgroundColor = [UIColor redColor]; 
[self.view addSubview:newView]; 


[CATransaction begin]; 
[CATransaction setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransactionAnimationDuration]; 

newView.layer.frame = CGRectMake(20,20,220,220); 

[CATransaction commit]; 
} 

應該創建一個紅色正方形,對於半秒儘快動畫的應用程序加載。問題是它沒有動畫。我無法弄清楚爲什麼。我創建了這個簡單的項目來隔離所有變量,但它仍然不起作用。

任何人都可以幫助或指出我在某些核心動畫閱讀材料的正確方向。我已經瀏覽了蘋果的所有內容。

回答

5

如果您在CALayer上設置屬性(默認情況下爲動畫),您的代碼將按預期動畫。對於UIViews動畫,你必須像下面的方框內更改它們的屬性:

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0f]; 

// Change properties here 

[UIView commitAnimations]; 

CATransactions用於組動畫,讓他們相互協調,或手動禁用動畫的一組對象。

+1

是不是那行「newView.layer.frame = CGRectMake(20,20,220,220);」呢? 'layer'屬性訪問UIView的CALayer。這應該激活它,對嗎? – mazniak 2009-04-30 15:13:18