亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

實例講解iOS中的CATransition轉場動畫使用

2020-07-26 03:19:39
字體:
來源:轉載
供稿:網友

一、簡介
CATransition是CAAnimation的子類,用于做轉場動畫
能夠為圖層提供移出屏幕和移入屏幕的動畫效果。iOS比Mac OS X的轉場動畫效果少一點
如:UINavigationController導航控制器就是通過CATransition轉場動畫實現了將控制器的視圖推入屏幕的動畫效果

201661591630299.jpg (567×312)

CATransition頭文件
動畫屬性:
type:動畫過渡類型
subtype:動畫過渡方向
startProgress:動畫起點(在整體動畫的百分比)
endProgress:動畫終點(在整體動畫的百分比)
......

復制代碼 代碼如下:

#import <QuatzCore/CAAnimation.h> 
CATransition *myTransition=[CATransition animation];//創建CATransition 
myTransition.duration=0.3;//持續時長0.3秒 
myTransition.timingFunction=UIViewAnimationCurveEaseInOut;//計時函數,從頭到尾的流暢度 
myTransition.type=kCATransionPush;//動畫類型 
myTransition.subtype=kCATransitionFromLeft;//子類型 
//要令一個轉場生效,組要將動畫添加到將要變為動畫視圖所附著的圖層。例如在兩個視圖控制器之間進行轉場,那就將動畫添加到窗口的圖層中: 
[[self.view.superview layer]addAnimation:myTransition forKey:nil ]; 
//如果是將控制器內的子視圖轉場到另一個子視圖,就將動畫加入到視圖控制器的圖層。還有一種選擇,用視圖控制器內部的視圖作為替代,將你的子視圖作為主視圖的子圖層: 
 [ self.view.layer addAnimation:myTransition forKey:nil ]; 
[ self.view addSubView:newView ]; 
[oldView removeFromSuperview]; 
//如果你使用的是導航控制器,可以將動畫加到導航控制器的視圖圖層中。 
[ navigationController.view.layer addAnimation:myTransition forKey:nil  ]; 

轉場動畫過渡效果

201661591717734.jpg (567×334)

二、view類自帶轉場動畫函數
1、單視圖
+(void)transitionWithView:(UIView*)view duration:(NSTimeInterval)duration options:
(UIViewAnimationOptions)options
animations:(void(^)(void))animations
completion:(void(^)(BOOLfinished))completion;
參數說明:
duration:動畫的持續時間
view:需要進行轉場動畫的視圖
options:轉場動畫的類型
animations:將改變視圖屬性的代碼放在這個block中
completion:動畫結束后,會自動調用這個block
2、雙視圖
+ (void)transitionFromView:(UIView*) fromView
toView:(UIView*) toViewduration:(NSTimeInterval)durationoptions:(UIViewAnimationOptions) options
completion:(void(^)(BOOLfinished))completion;
參數說明:
duration:動畫的持續時間
options:轉場動畫的類型
animations:將改變視圖屬性的代碼放在這個block中
completion:動畫結束后,會自動調用這個block
三、應用
注意:
轉場動畫使用注意點:轉場代碼必須和轉場動畫代碼寫在一起,否則無效
1、圖片瀏覽
實例:

201661591740425.gif (274×249)

代碼實現

復制代碼 代碼如下:

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageV;

@end

@implementation ViewController

// 注意: 轉場動畫使用注意點:轉場代碼必須和轉場動畫代碼寫在一起,否則無效
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // 實現:圖片瀏覽

    /** 轉場代碼 */
    static int index = 2;
    NSString *imageName = [NSString stringWithFormat:@"%d",index];
    _imageV.image = [UIImage imageNamed:imageName];
    index++;

    if (index == 4) {
        index = 1;
    }

    /** 轉場動畫代碼 */
    // 創建轉場動畫對象
    CATransition *anim = [CATransition animation];

    // 設置轉場類型
    anim.type = @"pageCurl";

    // 設置動畫的方向
    anim.subtype = kCATransitionFromLeft;

    anim.duration = 3;

    [_imageV.layer addAnimation:anim forKey:nil];
}
@end


2、圖標3D翻轉:使用UIView自帶的單視圖的轉場動畫函數實現

201661591805078.gif (176×98)

代碼實現

復制代碼 代碼如下:

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic)  UIImageView *iconView;

@end

@implementation ViewController

- (void)viewDidLoad{

    [super viewDidLoad];


    UIImageView *iconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]];
    [self.view addSubview:iconView];
    iconView.center = self.view.center;
    iconView.backgroundColor = [UIColor greenColor];
    self.iconView = iconView;

    // 設置為圓角圖片
    self.iconView.layer.cornerRadius = self.iconView.frame.size.width * 0.5;
    self.iconView.clipsToBounds = YES;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

    // UIView自帶的轉場動畫
    [UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ /**  執行左翻轉動畫,*/
        // 從左邊翻轉 , 之前設置顯示圖片1,翻轉后顯示圖2 -》圖片1 左翻轉到最后顯示圖片2


        self.iconView.image = [UIImage imageNamed:@"2"];

    } completion:^(BOOL finished) {

        NSLog(@"completion");

        /** 左翻轉動畫 結束后, 停 1 秒后,再執行 右翻轉動畫 */

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 停 1 秒后,再執行 右翻轉動畫

            [UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ // 然后,從右邊翻轉,翻轉時顯示圖片1 -》圖片2 右翻轉最后顯示圖片1

                self.iconView.image = [UIImage imageNamed:@"1"];

            } completion:nil];

        });
    }];
}
@end


3、視圖間轉場動畫:使用UIView自帶雙視圖間的轉場動畫函數實現

復制代碼 代碼如下:

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

/**< imageView1  */
@property (nonatomic, strong) UIView *view1;

/**< imageView2 */
@property (nonatomic, strong) UIView *view2;

@end

@implementation ViewController

- (void)viewDidLoad{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor blackColor];

    // 1. scrollView 添加 view2 子控件
    UIView *view2 = [[UIView alloc] init];
    view2.backgroundColor = [UIColor greenColor];

    [self.scrollView addSubview:view2];
    self.view2 = view2;

    // 2. scrollView 添加 view1 子控件
    UIView *view1 = [[UIView alloc] init];
    view1.backgroundColor = [UIColor redColor];

    [self.scrollView addSubview:view1];
    self.view1 = view1;

    // 3. frame
    CGFloat scrollViewW = self.scrollView.frame.size.width;
    CGFloat scrollViewH = self.scrollView.frame.size.height;

    view1.frame = CGRectMake(0, 0, scrollViewW, scrollViewH);
    view2.frame = CGRectMake(0, 0, scrollViewW, scrollViewH); // CGRectMake(scrollViewW, 0, scrollViewW, scrollViewH);

    // 4. scrollView
    self.scrollView.contentSize = CGSizeMake(scrollViewW, scrollViewH);
    // 添加手勢
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];
    [self.scrollView addGestureRecognizer:tap];
}

int i = 1;

// 監聽到點擊scrollView,進行翻轉動畫
- (void)tapClick:(UITapGestureRecognizer *)tap{

    if (i % 2 != 0) {

        [UIView transitionFromView:self.view1 toView:self.view2 duration:1.0 options:UIViewAnimationOptionTransitionFlipFromTop completion:nil];

    }else{
        [UIView transitionFromView:self.view2 toView:self.view1 duration:1.0 options:UIViewAnimationOptionTransitionFlipFromBottom completion:nil];
    }

    i++;
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费视频观看| 国产欧美日韩专区发布| 国产精品美女久久久免费| 国产97免费视| 日韩美女主播视频| 亚洲iv一区二区三区| 91精品免费视频| 久久亚洲精品中文字幕冲田杏梨| 国产精品69久久久久| 色妞色视频一区二区三区四区| 亚洲男人天天操| 欧美在线免费视频| 国内精品久久影院| 日韩免费看的电影电视剧大全| 亚洲欧美国产一区二区三区| 精品久久久久久电影| 国产综合香蕉五月婷在线| 亚洲人成自拍网站| 久久影视免费观看| 亚洲人精选亚洲人成在线| 亚洲国产欧美一区二区丝袜黑人| 欧美尺度大的性做爰视频| 国产精品手机播放| 亚洲影视中文字幕| 精品亚洲aⅴ在线观看| zzjj国产精品一区二区| 日韩精品高清视频| 国产精品99久久久久久久久| 日韩在线观看电影| 亚洲欧美日韩中文在线| 欧美日韩成人精品| 亚洲国产另类 国产精品国产免费| 国产精品手机播放| 欧洲精品久久久| 欧美激情亚洲视频| 国产91久久婷婷一区二区| 日韩人体视频一二区| 国产午夜精品免费一区二区三区| 91亚洲国产精品| 亚洲乱码一区av黑人高潮| 精品国内亚洲在观看18黄| 欧美激情视频一区二区三区不卡| 成人黄色片网站| 国产成人一区二区在线| 精品日本美女福利在线观看| 91国语精品自产拍在线观看性色| 亚洲福利视频二区| 97久久超碰福利国产精品…| 亚洲国产成人久久综合一区| 九九精品在线播放| 亚洲国产日韩欧美在线图片| 欧美激情视频一区二区三区不卡| 日韩在线观看免费全| 欧美噜噜久久久xxx| 国产日本欧美一区二区三区在线| 色噜噜狠狠狠综合曰曰曰| 国产乱人伦真实精品视频| 精品亚洲一区二区三区在线播放| 日韩国产欧美精品在线| 一本色道久久综合狠狠躁篇怎么玩| 久久中文字幕国产| 精品一区精品二区| 97久久精品人人澡人人爽缅北| 国产精品视频久久久久| 伊人久久五月天| 777777777亚洲妇女| 亚洲男人天堂九九视频| 97av在线影院| 色777狠狠综合秋免鲁丝| 欧美日韩国产第一页| 欧美性猛交xxxx久久久| 久久在精品线影院精品国产| 国产精品aaaa| 日本一区二区不卡| 欧美日韩国产一区二区三区| 日韩成人网免费视频| 精品中文字幕在线| 久久久精品国产亚洲| 91成人精品网站| 日韩电影中文字幕在线观看| 91久久久久久久| 国产91精品视频在线观看| 亚洲国产中文字幕在线观看| 亚洲最大成人网色| 色综合久综合久久综合久鬼88| 日本19禁啪啪免费观看www| 成人美女免费网站视频| 91成人精品网站| 精品久久在线播放| 亚州精品天堂中文字幕| 亚洲最新av在线网站| 亚洲国产欧美自拍| 久久久久亚洲精品成人网小说| 在线成人免费网站| 国产精品网站视频| 欧美日韩一区二区三区| 欧美福利视频网站| 一本大道香蕉久在线播放29| 国产欧美一区二区三区四区| 国产激情视频一区| 欧美成人午夜激情视频| 98精品在线视频| 欧美第一淫aaasss性| 亚洲一区二区中文字幕| 亚洲石原莉奈一区二区在线观看| 91av中文字幕| 中文字幕国产精品久久| 国内精品免费午夜毛片| 欧美xxxx做受欧美.88| 亚洲美女又黄又爽在线观看| 日韩不卡中文字幕| 91性高湖久久久久久久久_久久99| 国产精品美女在线| 一本一本久久a久久精品综合小说| 亚洲精品v天堂中文字幕| 日韩黄色在线免费观看| 精品国产一区二区三区久久| 欧美亚洲国产视频小说| 日韩精品极品视频| 日韩人体视频一二区| 亚洲国产美女久久久久| 国产精品日韩精品| 亚洲午夜女主播在线直播| 欧美激情欧美狂野欧美精品| 国产成人欧美在线观看| 亚洲伊人第一页| 国产日韩av在线| 日韩精品免费在线视频观看| 亚洲欧美日韩第一区| 97免费中文视频在线观看| 少妇高潮久久77777| xxx一区二区| 欧美亚洲免费电影| 欧美国产中文字幕| 日韩av快播网址| 亚洲精品久久视频| 欧美在线性视频| 美女福利精品视频| 亚洲理论电影网| 亚洲欧洲在线观看| 欧美一级视频免费在线观看| 美日韩精品视频免费看| 九色91av视频| 97精品久久久| 欧美另类在线播放| 亚洲欧美日韩精品久久奇米色影视| 91精品国产91久久久久久久久| 国产一区二区久久精品| 国产欧美 在线欧美| 欧美综合激情网| 青青青国产精品一区二区| 51ⅴ精品国产91久久久久久| 亚洲一区二区久久久| 久久久精品视频在线观看| 久久精品亚洲一区| 欧美福利视频在线| 韩曰欧美视频免费观看| 日韩风俗一区 二区| 欧美日韩成人黄色| 按摩亚洲人久久| 国产成人在线亚洲欧美| 欧美成年人视频网站欧美| 亚洲色图五月天| 久久精品成人欧美大片|