ios中的各中動畫(旋轉,平移) – iPhone手機開發技術文章 iPhone軟體開發教學課程

//圖片進行自動旋轉

CABasicAnimation是一個最多隻能有兩個關鍵幀的動畫,

UIImageView *imageView = [[UIImageView
alloc]initWithImage:[UIImage
imageNamed:@”7″]];

imageView.frame =
CGRectMake(40, 60,
200, 250);

[self.view
addSubview:imageView];

CABasicAnimation *animation = [CABasicAnimation
animationWithKeyPath:@”transform”];

animation.delegate =
self;

animation.toValue = [NSValue
valueWithCATransform3D:CATransform3DMakeRotation(M_PI,
0, 0,
1.0)];

//執行時間

animation.duration =
30;

animation.cumulative =
YES;//累積的

//執行次數

animation.repeatCount = INT_MAX;

animation.autoreverses=YES;//是否自動重復

[imageView.layer
addAnimation:animation forKey:@”animation”];


通過CATransition實現類似UINavigationController的pushview及Popview效果

CATransition動畫使用瞭類型type和子類型subtype兩個概念。type屬性指定瞭過渡的種類(淡化、推擠、揭開、覆蓋)。subtype設置瞭過渡的方向(從上、下、左、右)。另外,CATransition私有的動畫類型有(立方體、吸收、翻轉、波紋、翻頁、反翻頁、鏡頭開、鏡頭關)。

/* CATransition *myT = [ CATransition animation];

myT.timingFunction = UIViewAnimationCurveEaseInOut;

myT.type = @”cube”;

//動畫類型

// 1 kCATransitionFromBottom

// 2 kCATransitionFromLeft

// 3 kCATransitionFromTop

// 4 kCATransitionFromRight

//myT.subtype = kCATransitionFromLeft;

myT.subtype = kCATransitionFromLeft;

myT.duration = 0.5;

[self.navigationController.view.layer addAnimation: myT forKey:nil];

NSLog(@”app”);*/

創建UIView動畫(塊)——(指過渡效果的動畫)

//方法一:

//過度動畫的效果,是2個View的切換

– (void)viewDidLoad

{

[super
viewDidLoad];

UIButton* button12 = [[UIButton
alloc]initWithFrame:CGRectMake(20,
340, 150, 30)];

[button12
addTarget:self
action:@selector(button22)
forControlEvents:UIControlEventTouchUpInside];

[button12
setTitle:@”開始動畫” forState:UIControlStateNormal];

button12.backgroundColor = [UIColor
redColor];

[self.view
addSubview:button12];

//方法二:

// 2 用block語法實現

/* [UIView animateWithDuration:0.5 animations:^{

CGRect frames = self.view_1.frame;

frames.origin.x = 160;

self.view_1.frame = frames;

//縮放

self.view_1.transform = CGAffineTransformScale(self.view_1.transform, 0.01, 0.01);

}completion:^(BOOL finished) {

CGRect frames = self.view_1.frame;

frames.origin.x = 0;

self.view_1.frame = frames;

//恢復到原始的縮放

self.view_1.transform = CGAffineTransformIdentity;

}];*/

}

-(void)button22

{

//開始動畫

[UIView
beginAnimations:@”testanimation”
context:nil];

[UIView
setAnimationDuration:0.5];

//代理

[UIView
setAnimationDelegate:self];

//動畫的響應事件,使視圖自動回到原來的位置

[UIView
setAnimationDidStopSelector:@selector(animationstop)];

[UIView
setAnimationCurve:UIViewAnimationCurveEaseInOut];

//獲得視圖的位置

CGRect frames =
self.view_1.frame;

frames.origin.x =
160;

self.view_1.frame = frames;

[UIView
commitAnimations];

}

-(void)animationstop

{

[UIView
beginAnimations:nil
context:nil];

[UIView
setAnimationDuration:0.5];

CGRect frames =
self.view_1.frame;

frames.origin.x =
0;

self.view_1.frame = frames;

[UIView
commitAnimations];

}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *