iOS CoreAnimationターンフィールドアニメーションCATransition
5196 ワード
参考資料:http://www.cnblogs.com/kenshincui/p/3972100.html#autoid-3-0-0まとめ:
効果:
ターンフィールドアニメーションとは、あるシーンから別のシーンにアニメーションで移行することです.回転アニメーションの使用は一般的に以下のステップに分けられる:1.ターンフィールドアニメーションCATransition 2を作成します.ターンテーブルタイプtranstionを設定します.type、サブタイプtranstion.subtype(オプション)およびその他の属性3.ターンオーバー後の新しいビューを設定し、アニメーションをレイヤーの下の表に追加すると、一般的なターンオーバータイプがリストされます(プライベートAPIはアップル公式に公開されていないアニメーションタイプですが、現在も使用可能です):*公開のAPI*fadeフェードアウト効果kCATransitionFade movein新しいビュー古いビューに移動kCATransitionMoveIn push新しいビュー古いビューを終了kCATransitionPush reveal古いビューを移動新しいビューkCATransitionRevealプライベートAPI cube立体反転効果oglFlip反転効果sを表示uckEffect収縮効果rippleEffect水滴うねり効果pageCurlアップページ効果pageUnCurlダウンページ効果cameralIrisHollowOpenカメラオープン効果cameraIrisHollowCloseカメラクローズ効果
効果:
ターンフィールドアニメーションとは、あるシーンから別のシーンにアニメーションで移行することです.回転アニメーションの使用は一般的に以下のステップに分けられる:1.ターンフィールドアニメーションCATransition 2を作成します.ターンテーブルタイプtranstionを設定します.type、サブタイプtranstion.subtype(オプション)およびその他の属性3.ターンオーバー後の新しいビューを設定し、アニメーションをレイヤーの下の表に追加すると、一般的なターンオーバータイプがリストされます(プライベートAPIはアップル公式に公開されていないアニメーションタイプですが、現在も使用可能です):*公開のAPI*fadeフェードアウト効果kCATransitionFade movein新しいビュー古いビューに移動kCATransitionMoveIn push新しいビュー古いビューを終了kCATransitionPush reveal古いビューを移動新しいビューkCATransitionRevealプライベートAPI cube立体反転効果oglFlip反転効果sを表示uckEffect収縮効果rippleEffect水滴うねり効果pageCurlアップページ効果pageUnCurlダウンページ効果cameralIrisHollowOpenカメラオープン効果cameraIrisHollowCloseカメラクローズ効果
//
// TransitionViewController.m
// CAKeyframeAnimation
//
// Created by on 16/5/26.
// Copyright © 2016 . All rights reserved.
//
#import "TransitionViewController.h"
#define IMAGE_COUNT 10
@interface TransitionViewController (){
UIImageView *_imageView;
int _currnetIndex;
}
@end
@implementation TransitionViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
//
_imageView = [[UIImageView alloc] init];
_imageView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
_imageView.contentMode = UIViewContentModeScaleAspectFit;
_imageView.image = [UIImage imageNamed:@"fish0"];
[self.view addSubview:_imageView];
//
UISwipeGestureRecognizer *left = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipe)];
left.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:left];
UISwipeGestureRecognizer *right = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipe)];
[self.view addGestureRecognizer:right];
// Do any additional setup after loading the view.
}
#pragma mark ----
- (void)leftSwipe
{
[self transitionAnimation:YES];
}
#pragma mark ---
- (void)rightSwipe
{
[self transitionAnimation:NO];
}
#pragma mark ---
/**
* 。 :
1. CATransition
2. transtion.type、 transtion.subtype( )
3.
( API , ):
*
API
* fade kCATransitionFade
movein kCATransitionMoveIn
push kCATransitionPush
reveal kCATransitionReveal
API
cube
oglFlip
suckEffect
rippleEffect
pageCurl
pageUnCurl
cameralIrisHollowOpen
cameraIrisHollowClose
*/
- (void)transitionAnimation:(BOOL)isNext
{
// 1.
CATransition *transtion = [[CATransition alloc] init];
// ,
transtion.type = @"cameraIrisHollowClose";
//
if (isNext) {
transtion.subtype = kCATransitionFromRight;
}else {
transtion.subtype = kCATransitionFromLeft;
}
//
transtion.duration = 1.0;
//
_imageView.image = [self getImage:isNext];
[_imageView.layer addAnimation:transtion forKey:@"KCTransitionAnimation"];
}
- (UIImage *)getImage:(BOOL)isNext
{
if (isNext) {
_currnetIndex = (_currnetIndex + 1)%IMAGE_COUNT;
}else{
_currnetIndex = (_currnetIndex - 1 + IMAGE_COUNT) %IMAGE_COUNT;
}
NSString *imageName = [NSString stringWithFormat:@"fish%i", _currnetIndex];
return [UIImage imageNamed:imageName];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end