iOS CoreAnimation 轉場動畫 CATransition

來源:互聯網
上載者:User

標籤:

本文參考: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  翻轉效果
    suckEffect 收縮效果
    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


iOS CoreAnimation 轉場動畫 CATransition

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.