国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS 動(dòng)畫

2019-11-09 14:56:58
字體:
供稿:網(wǎng)友
//  //  CoreAnimationEffect.h  //  CoreAnimationEffect  //  //  Created by VincentXue on 13-1-19.  //  Copyright (c) 2013年 VincentXue. All rights reserved.  //     #import <Foundation/Foundation.h>     /**  !  導(dǎo)入QuartzCore.framework  *  *  Example:  *  *  Step.1  *  *      #import "CoreAnimationEffect.h"  *  *  Step.2  *  *      [CoreAnimationEffect animationMoveLeft:your view];  *    */        @interface CoreAnimationEffect : NSObject     #PRagma mark - Custom Animation     /**  *   @brief 快速構(gòu)建一個(gè)你自定義的動(dòng)畫,有以下參數(shù)供你設(shè)置.  *  *   @note  調(diào)用系統(tǒng)預(yù)置Type需要在調(diào)用類引入下句  *  *          #import <QuartzCore/QuartzCore.h>  *  *   @param type                動(dòng)畫過渡類型  *   @param subType             動(dòng)畫過渡方向(子類型)  *   @param duration            動(dòng)畫持續(xù)時(shí)間  *   @param timingFunction      動(dòng)畫定時(shí)函數(shù)屬性  *   @param theView             需要添加動(dòng)畫的view.  *  *  */     + (void)showAnimationType:(NSString *)type                withSubType:(NSString *)subType                   duration:(CFTimeInterval)duration             timingFunction:(NSString *)timingFunction                       view:(UIView *)theView;     #pragma mark - Preset Animation     /**  *  下面是一些常用的動(dòng)畫效果  */     // reveal  + (void)animationRevealFromBottom:(UIView *)view;  + (void)animationRevealFromTop:(UIView *)view;  + (void)animationRevealFromLeft:(UIView *)view;  + (void)animationRevealFromRight:(UIView *)view;     // 漸隱漸消  + (void)animationEaseIn:(UIView *)view;  + (void)animationEaSEOut:(UIView *)view;     // 翻轉(zhuǎn)  + (void)animationFlphp/CATransition      */             animation.subtype = subType;             /**      *  所有核心動(dòng)畫和特效都是基于CAAnimation,而CAAnimation是作用于CALayer的.所以把動(dòng)畫添加到layer上.      *  forKey  可以是任意字符串.      */             [theView.layer addAnimation:animation forKey:nil];  }     #pragma mark - Preset Animation        + (void)animationRevealFromBottom:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setType:kCATransitionReveal];      [animation setSubtype:kCATransitionFromBottom];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationRevealFromTop:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setType:kCATransitionReveal];      [animation setSubtype:kCATransitionFromTop];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationRevealFromLeft:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setType:kCATransitionReveal];      [animation setSubtype:kCATransitionFromLeft];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationRevealFromRight:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setType:kCATransitionReveal];      [animation setSubtype:kCATransitionFromRight];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];             [view.layer addAnimation:animation forKey:nil];  }        + (void)animationEaseIn:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setType:kCATransitionFade];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationEaseOut:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setType:kCATransitionFade];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];             [view.layer addAnimation:animation forKey:nil];  }        /**  *  UIViewAnimation  *  *  @see    http://www.cocoachina.com/bbs/read.php?tid=110168  *  *  @brief  UIView動(dòng)畫應(yīng)該是最簡單便捷創(chuàng)建動(dòng)畫的方式了,詳解請(qǐng)猛戳URL.  *    *  @method beginAnimations:context 第一個(gè)參數(shù)用來作為動(dòng)畫的標(biāo)識(shí),第二個(gè)參數(shù)給代理代理傳遞消息.至于為什么一個(gè)使用  *                                  nil而另外一個(gè)使用NULL,是因?yàn)榈谝粋€(gè)參數(shù)是一個(gè)對(duì)象指針,而第二個(gè)參數(shù)是基本數(shù)據(jù)類型.  *  @method setAnimationCurve:      設(shè)置動(dòng)畫的加速或減速的方式(速度)  *  @method setAnimationDuration:   動(dòng)畫持續(xù)時(shí)間  *  @method setAnimationTransition:forView:cache:   第一個(gè)參數(shù)定義動(dòng)畫類型,第二個(gè)參數(shù)是當(dāng)前視圖對(duì)象,第三個(gè)參數(shù)是是否使用緩沖區(qū)  *  @method commitAnimations        動(dòng)畫結(jié)束  */     + (void)animationFlipFromLeft:(UIView *)view  {      [UIView beginAnimations:nil context:NULL];      [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];      [UIView setAnimationDuration:0.35f];      [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view cache:NO];      [UIView commitAnimations];  }     + (void)animationFlipFromRigh:(UIView *)view  {      [UIView beginAnimations:nil context:NULL];      [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];      [UIView setAnimationDuration:0.35f];      [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:view cache:NO];      [UIView commitAnimations];  }        + (void)animationCurlUp:(UIView *)view  {      [UIView beginAnimations:nil context:NULL];      [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];      [UIView setAnimationDuration:0.35f];      [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:view cache:NO];      [UIView commitAnimations];  }     + (void)animationCurlDown:(UIView *)view  {      [UIView beginAnimations:nil context:NULL];      [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];      [UIView setAnimationDuration:0.35f];      [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:view cache:NO];      [UIView commitAnimations];  }     + (void)animationPushUp:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:kCATransitionPush];      [animation setSubtype:kCATransitionFromTop];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationPushDown:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:kCATransitionPush];      [animation setSubtype:kCATransitionFromBottom];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationPushLeft:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:kCATransitionPush];      [animation setSubtype:kCATransitionFromLeft];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationPushRight:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:kCATransitionPush];      [animation setSubtype:kCATransitionFromRight];             [view.layer addAnimation:animation forKey:nil];  }     // presentModalViewController  + (void)animationMoveUp:(UIView *)view duration:(CFTimeInterval)duration  {      CATransition *animation = [CATransition animation];      [animation setDuration:duration];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];      [animation setType:kCATransitionMoveIn];      [animation setSubtype:kCATransitionFromTop];             [view.layer addAnimation:animation forKey:nil];  }     // dissModalViewController  + (void)animationMoveDown:(UIView *)view duration:(CFTimeInterval)duration  {      CATransition *transition = [CATransition animation];      transition.duration =0.4;      transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];      transition.type = kCATransitionReveal;      transition.subtype = kCATransitionFromBottom;      [view.layer addAnimation:transition forKey:nil];  }     + (void)animationMoveLeft:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:kCATransitionMoveIn];      [animation setSubtype:kCATransitionFromLeft];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationMoveRight:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:kCATransitionMoveIn];      [animation setSubtype:kCATransitionFromRight];             [view.layer addAnimation:animation forKey:nil];  }     +(void)animationRotateAndScaleEffects:(UIView *)view  {      [UIView animateWithDuration:0.35f animations:^       {           /**           *  @see       http://donbe.blog.163.com/blog/static/138048021201061054243442/           *           *  @param     transform   形變屬性(結(jié)構(gòu)體),可以利用這個(gè)屬性去對(duì)view做一些翻轉(zhuǎn)或者縮放.詳解請(qǐng)猛戳↑URL.           *           *  @method    valueWithCATransform3D: 此方法需要一個(gè)CATransform3D的結(jié)構(gòu)體.一些非詳細(xì)的講解可以看下面的URL           *           *  @see       http://blog.csdn.net/liubo0_0/article/details/7452166           *           */                       view.transform = CGAffineTransformMakeScale(0.001, 0.001);                       CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];                       // 向右旋轉(zhuǎn)45°縮小到最小,然后再從小到大推出.           animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.70, 0.40, 0.80)];                       /**           *     其他效果:           *     從底部向上收縮一半后彈出           *     animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0)];           *           *     從底部向上完全收縮后彈出           *     animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1.0, 0.0, 0.0)];           *           *     左旋轉(zhuǎn)45°縮小到最小,然后再從小到大推出.           *     animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.50, -0.50, 0.50)];           *           *     旋轉(zhuǎn)180°縮小到最小,然后再從小到大推出.           *     animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.1, 0.2, 0.2)];           */                       animation.duration = 0.45;           animation.repeatCount = 1;           [view.layer addAnimation:animation forKey:nil];                   }                       completion:^(BOOL finished)       {           [UIView animateWithDuration:0.35f animations:^            {                view.transform = CGAffineTransformMakeScale(1.0, 1.0);            }];       }];  }     /** CABasicAnimation  *  *  @see https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreAnimation_guide/Articles/KVCAdditions.html  *  *  @brief                      便利構(gòu)造函數(shù) animationWithKeyPath: KeyPath需要一個(gè)字符串類型的參數(shù),實(shí)際上是一個(gè)  *                              鍵-值編碼協(xié)議的擴(kuò)展,參數(shù)必須是CALayer的某一項(xiàng)屬性,你的代碼會(huì)對(duì)應(yīng)的去改變?cè)搶傩缘男Ч?nbsp; *                              具體可以填寫什么請(qǐng)參考上面的URL,切勿亂填!  *                              例如這里填寫的是 @"transform.rotation.z" 意思就是圍繞z軸旋轉(zhuǎn),旋轉(zhuǎn)的單位是弧度.  *                              這個(gè)動(dòng)畫的效果是把view旋轉(zhuǎn)到最小,再旋轉(zhuǎn)回來.  *                              你也可以填寫@"opacity" 去修改透明度...以此類推.修改layer的屬性,可以用這個(gè)類.  *  *  @param toValue              動(dòng)畫結(jié)束的值.CABasicAnimation自己只有三個(gè)屬性(都很重要)(其他屬性是繼承來的),分別為:  *                              fromValue(開始值), toValue(結(jié)束值), byValue(偏移值),  !                              這三個(gè)屬性最多只能同時(shí)設(shè)置兩個(gè);  *                              他們之間的關(guān)系如下:  *                              如果同時(shí)設(shè)置了fromValue和toValue,那么動(dòng)畫就會(huì)從fromValue過渡到toValue;  *                              如果同時(shí)設(shè)置了fromValue和byValue,那么動(dòng)畫就會(huì)從fromValue過渡到fromValue + byValue;  *                              如果同時(shí)設(shè)置了byValue  和toValue,那么動(dòng)畫就會(huì)從toValue - byValue過渡到toValue;  *  *                              如果只設(shè)置了fromValue,那么動(dòng)畫就會(huì)從fromValue過渡到當(dāng)前的value;  *                              如果只設(shè)置了toValue  ,那么動(dòng)畫就會(huì)從當(dāng)前的value過渡到toValue;  *                              如果只設(shè)置了byValue  ,那么動(dòng)畫就會(huì)從從當(dāng)前的value過渡到當(dāng)前value + byValue.  *  *                              可以這么理解,當(dāng)你設(shè)置了三個(gè)中的一個(gè)或多個(gè),系統(tǒng)就會(huì)根據(jù)以上規(guī)則使用插值算法計(jì)算出一個(gè)時(shí)間差并  *                              同時(shí)開啟一個(gè)Timer.Timer的間隔也就是這個(gè)時(shí)間差,通過這個(gè)Timer去不停地刷新keyPath的值.  !                              而實(shí)際上,keyPath的值(layer的屬性)在動(dòng)畫運(yùn)行這一過程中,是沒有任何變化的,它只是調(diào)用了GPU去  *                              完成這些顯示效果而已.  *                              在這個(gè)動(dòng)畫里,是設(shè)置了要旋轉(zhuǎn)到的弧度,根據(jù)以上規(guī)則,動(dòng)畫將會(huì)從它當(dāng)前的弧度專旋轉(zhuǎn)到我設(shè)置的弧度.  *  *  @param duration             動(dòng)畫持續(xù)時(shí)間  *  *  @param timingFunction       動(dòng)畫起點(diǎn)和終點(diǎn)之間的插值計(jì)算,也就是說它決定了動(dòng)畫運(yùn)行的節(jié)奏,是快還是慢,還是先快后慢...  */     /** CAAnimationGroup  *  *  @brief                      顧名思義,這是一個(gè)動(dòng)畫組,它允許多個(gè)動(dòng)畫組合在一起并行顯示.比如這里設(shè)置了兩個(gè)動(dòng)畫,  *                              把他們加在動(dòng)畫組里,一起顯示.例如你有幾個(gè)動(dòng)畫,在動(dòng)畫執(zhí)行的過程中需要同時(shí)修改動(dòng)畫的某些屬性,  *                              這時(shí)候就可以使用CAAnimationGroup.  *  *  @param duration             動(dòng)畫持續(xù)時(shí)間,值得一提的是,如果添加到group里的子動(dòng)畫不設(shè)置此屬性,group里的duration會(huì)統(tǒng)一  *                              設(shè)置動(dòng)畫(包括子動(dòng)畫)的duration屬性;但是如果子動(dòng)畫設(shè)置了duration屬性,那么group的duration屬性  *                              的值不應(yīng)該小于每個(gè)子動(dòng)畫中duration屬性的值,否則會(huì)造成子動(dòng)畫顯示不全就停止了動(dòng)畫.  *  *  @param autoreverses         動(dòng)畫完成后自動(dòng)重新開始,默認(rèn)為NO.  *  *  @param repeatCount          動(dòng)畫重復(fù)次數(shù),默認(rèn)為0.  *  *  @param animations           動(dòng)畫組(數(shù)組類型),把需要同時(shí)運(yùn)行的動(dòng)畫加到這個(gè)數(shù)組里.  *  *  @note  addAnimation:forKey  這個(gè)方法的forKey參數(shù)是一個(gè)字符串,這個(gè)字符串可以隨意設(shè)置.  *  *  @note                       如果你需要在動(dòng)畫group執(zhí)行結(jié)束后保存動(dòng)畫效果的話,設(shè)置 fillMode 屬性,并且把  *                              removedOnCompletion 設(shè)置為NO;  */     + (void)animationRotateAndScaleDownUp:(UIView *)view  {      CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];   rotationAnimation.toValue = [NSNumber numberWithFloat:(2 * M_PI) * 2];   rotationAnimation.duration = 0.35f;   rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];          CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];   scaleAnimation.toValue = [NSNumber numberWithFloat:0.0];   scaleAnimation.duration = 0.35f;   scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];       CAAnimationGroup *animationGroup = [CAAnimationGroup animation];   animationGroup.duration = 0.35f;   animationGroup.autoreverses = YES;   animationGroup.repeatCount = 1;   animationGroup.animations =[NSArray arrayWithObjects:rotationAnimation, scaleAnimation, nil];   [view.layer addAnimation:animationGroup forKey:@"animationGroup"];  }           #pragma mark - Private API     + (void)animationFlipFromTop:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"oglFlip"];      [animation setSubtype:@"fromTop"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationFlipFromBottom:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"oglFlip"];      [animation setSubtype:@"fromBottom"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationCubeFromLeft:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"cube"];      [animation setSubtype:@"fromLeft"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationCubeFromRight:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"cube"];      [animation setSubtype:@"fromRight"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationCubeFromTop:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"cube"];      [animation setSubtype:@"fromTop"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationCubeFromBottom:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"cube"];      [animation setSubtype:@"fromBottom"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationSuckEffect:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"suckEffect"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationRippleEffect:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"rippleEffect"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationCameraOpen:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"cameraIrisHollowOpen"];      [animation setSubtype:@"fromRight"];             [view.layer addAnimation:animation forKey:nil];  }     + (void)animationCameraClose:(UIView *)view  {      CATransition *animation = [CATransition animation];      [animation setDuration:0.35f];      [animation setFillMode:kCAFillModeForwards];      [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];      [animation setType:@"cameraIrisHollowClose"];      [animation setSubtype:@"fromRight"];             [view.layer addAnimation:animation forKey:nil];  }  @end  
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 思南县| 安塞县| 中宁县| 鱼台县| 崇信县| 丹巴县| 秦皇岛市| 特克斯县| 读书| 抚州市| 凤翔县| 剑阁县| 丽水市| 阿勒泰市| 崇信县| 成武县| 五家渠市| 钟山县| 祁连县| 大石桥市| 榕江县| 武定县| 谢通门县| 正蓝旗| 乌拉特前旗| 本溪市| 乌什县| 塔城市| 涞水县| 江川县| 太湖县| 永和县| 海口市| 永修县| 广西| 景泰县| 正定县| 汤原县| 安溪县| 丹巴县| 扶绥县|