2011-07-18 189 views
2

我試圖做一個移動兩個視圖框架的簡單動畫。基本上隱藏廣告直到它被加載,然後從底部向上移動框架,以及從底部開始的視圖,然後當廣告推起時也會向上移動。開始和結束的位置是正確的,但我不認爲它是動畫。它是否正確?謝謝。UIView.frame的核心動畫

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"frame"]; 
    animation.duration = 1.0; 

    CGRect adFrame = CGRectMake(self.adBanner.frame.origin.x, self.adBanner.frame.origin.y - self.adBanner.frame.size.height, self.adBanner.frame.size.width, self.adBanner.frame.size.height); 
    self.adBanner.frame = adFrame; 
    [self.adBanner.layer addAnimation:animation forKey:@"frame"]; 

    CGRect buttonViewFrame = CGRectMake(self.ButtonView.frame.origin.x, self.adBanner.frame.origin.y - self.adBanner.frame.size.height, self.ButtonView.frame.size.width, self.ButtonView.frame.size.height); 
    self.ButtonView.frame = buttonViewFrame; 
    [self.ButtonView.layer addAnimation:animation forKey:@"frame"]; 

回答

12

對於如此簡單的東西,你不真的需要使用的Core Animation直的UIView內置的動畫系統應該足夠了。

[UIView animateWithDuration:1.0 animations:^{ 
    self.adBanner.frame = adFrame; 
    self.ButtonView.frame = buttonViewFrame; 
}]; 

,或者,如果你的目標前4.0的iOS,

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 
    self.adBanner.frame = adFrame; 
    self.ButtonView.frame = buttonViewFrame; 
[UIView commitAnimations]; 
1
[UIView beginAnimations : @"Display notif" context:nil]; 

[UIView setAnimationDuration:1]; 

[UIView setAnimationBeginsFromCurrentState:FALSE]; 

CGRect frame = mainView.frame; 

frame.size.height -= 40; 

frame.origin.y += 40; 

mainView.frame = frame; 

[UIView commitAnimations];