最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例講解iOS中的CATransition轉(zhuǎn)場(chǎng)動(dòng)畫(huà)使用

 更新時(shí)間:2016年06月15日 09:27:20   作者:iOS_成才錄  
CATransition類(lèi)為應(yīng)用程序的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)提供了很多可控制參數(shù),接下來(lái)我們就以幾個(gè)實(shí)例講解iOS中的CATransition轉(zhuǎn)場(chǎng)動(dòng)畫(huà)使用,需要的朋友可以參考下

一、簡(jiǎn)介
CATransition是CAAnimation的子類(lèi),用于做轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
能夠?yàn)閳D層提供移出屏幕和移入屏幕的動(dòng)畫(huà)效果。iOS比Mac OS X的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)效果少一點(diǎn)
如:UINavigationController導(dǎo)航控制器就是通過(guò)CATransition轉(zhuǎn)場(chǎng)動(dòng)畫(huà)實(shí)現(xiàn)了將控制器的視圖推入屏幕的動(dòng)畫(huà)效果

201661591630299.jpg (567×312)

CATransition頭文件
動(dòng)畫(huà)屬性:
type:動(dòng)畫(huà)過(guò)渡類(lèi)型
subtype:動(dòng)畫(huà)過(guò)渡方向
startProgress:動(dòng)畫(huà)起點(diǎn)(在整體動(dòng)畫(huà)的百分比)
endProgress:動(dòng)畫(huà)終點(diǎn)(在整體動(dòng)畫(huà)的百分比)
......

復(fù)制代碼 代碼如下:

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

轉(zhuǎn)場(chǎng)動(dòng)畫(huà)過(guò)渡效果

201661591717734.jpg (567×334)

二、view類(lèi)自帶轉(zhuǎn)場(chǎng)動(dòng)畫(huà)函數(shù)
1、單視圖
+(void)transitionWithView:(UIView*)view duration:(NSTimeInterval)duration options:
(UIViewAnimationOptions)options
animations:(void(^)(void))animations
completion:(void(^)(BOOLfinished))completion;
參數(shù)說(shuō)明:
duration:動(dòng)畫(huà)的持續(xù)時(shí)間
view:需要進(jìn)行轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的視圖
options:轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的類(lèi)型
animations:將改變視圖屬性的代碼放在這個(gè)block中
completion:動(dòng)畫(huà)結(jié)束后,會(huì)自動(dòng)調(diào)用這個(gè)block
2、雙視圖
+ (void)transitionFromView:(UIView*) fromView
toView:(UIView*) toViewduration:(NSTimeInterval)durationoptions:(UIViewAnimationOptions) options
completion:(void(^)(BOOLfinished))completion;
參數(shù)說(shuō)明:
duration:動(dòng)畫(huà)的持續(xù)時(shí)間
options:轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的類(lèi)型
animations:將改變視圖屬性的代碼放在這個(gè)block中
completion:動(dòng)畫(huà)結(jié)束后,會(huì)自動(dòng)調(diào)用這個(gè)block
三、應(yīng)用
注意:
轉(zhuǎn)場(chǎng)動(dòng)畫(huà)使用注意點(diǎn):轉(zhuǎn)場(chǎng)代碼必須和轉(zhuǎn)場(chǎng)動(dòng)畫(huà)代碼寫(xiě)在一起,否則無(wú)效
1、圖片瀏覽
實(shí)例:

201661591740425.gif (274×249)

代碼實(shí)現(xiàn)

復(fù)制代碼 代碼如下:

#import "ViewController.h"

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

@end

@implementation ViewController

// 注意: 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)使用注意點(diǎn):轉(zhuǎn)場(chǎng)代碼必須和轉(zhuǎn)場(chǎng)動(dòng)畫(huà)代碼寫(xiě)在一起,否則無(wú)效
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // 實(shí)現(xiàn):圖片瀏覽

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

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

    /** 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)代碼 */
    // 創(chuàng)建轉(zhuǎn)場(chǎng)動(dòng)畫(huà)對(duì)象
    CATransition *anim = [CATransition animation];

    // 設(shè)置轉(zhuǎn)場(chǎng)類(lèi)型
    anim.type = @"pageCurl";

    // 設(shè)置動(dòng)畫(huà)的方向
    anim.subtype = kCATransitionFromLeft;

    anim.duration = 3;

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


2、圖標(biāo)3D翻轉(zhuǎn):使用UIView自帶的單視圖的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)函數(shù)實(shí)現(xiàn)

201661591805078.gif (176×98)

代碼實(shí)現(xiàn)

復(fù)制代碼 代碼如下:

#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;

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

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

    // UIView自帶的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
    [UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ /**  執(zhí)行左翻轉(zhuǎn)動(dòng)畫(huà),*/
        // 從左邊翻轉(zhuǎn) , 之前設(shè)置顯示圖片1,翻轉(zhuǎn)后顯示圖2 -》圖片1 左翻轉(zhuǎn)到最后顯示圖片2


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

    } completion:^(BOOL finished) {

        NSLog(@"completion");

        /** 左翻轉(zhuǎn)動(dòng)畫(huà) 結(jié)束后, 停 1 秒后,再執(zhí)行 右翻轉(zhuǎn)動(dòng)畫(huà) */

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 停 1 秒后,再執(zhí)行 右翻轉(zhuǎn)動(dòng)畫(huà)

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

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

            } completion:nil];

        });
    }];
}
@end


3、視圖間轉(zhuǎn)場(chǎng)動(dòng)畫(huà):使用UIView自帶雙視圖間的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)函數(shù)實(shí)現(xiàn)

復(fù)制代碼 代碼如下:

#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);
    // 添加手勢(shì)
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];
    [self.scrollView addGestureRecognizer:tap];
}

int i = 1;

// 監(jiān)聽(tīng)到點(diǎn)擊scrollView,進(jìn)行翻轉(zhuǎn)動(dòng)畫(huà)
- (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++;
}


相關(guān)文章

最新評(píng)論

景东| 新兴县| 荔波县| 新平| 西宁市| 康平县| 天等县| 昔阳县| 许昌市| 桓台县| 巢湖市| 乳山市| 文成县| 突泉县| 班戈县| 方正县| 灵宝市| 卓尼县| 讷河市| 和政县| 磐石市| 高平市| 台南市| 台前县| 榆社县| 和静县| 成武县| 鹤岗市| 定结县| 贵溪市| 凤阳县| 申扎县| 高台县| 七台河市| 阿合奇县| 钟祥市| 抚顺市| 十堰市| 潼关县| 乌拉特前旗| 扶风县|