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

首頁 > 學院 > 開發設計 > 正文

CoreAnimation動畫的使用:關鍵幀動畫、基礎動畫、動畫組

2019-11-14 18:37:47
字體:
來源:轉載
供稿:網友

效果如下:

ViewController.h

1 #import <UIKit/UIKit.h>2 3 @interface ViewController : UIViewController4 @PRoperty (strong, nonatomic) IBOutlet UIImageView *imgVAnimation;5 @property (strong, nonatomic) IBOutlet UIButton *btnAnimation1;6 @property (strong, nonatomic) IBOutlet UIButton *btnAnimation2;7 8 @end

ViewController.m

  1 #import "ViewController.h"  2   3 @interface ViewController ()  4 - (void)modifyLayerForButton:(UIButton *)btn;  5 - (void)layoutUI;  6 @end  7   8 @implementation ViewController  9 #define kCornerRadiusOfImage CGRectGetWidth(_imgVAnimation.frame)/2.0 10  11 - (void)viewDidLoad { 12     [super viewDidLoad]; 13      14     [self layoutUI]; 15 } 16  17 - (void)didReceiveMemoryWarning { 18     [super didReceiveMemoryWarning]; 19     // Dispose of any resources that can be recreated. 20 } 21  22 - (void)modifyLayerForButton:(UIButton *)btn { 23     btn.layer.masksToBounds = YES; 24     btn.layer.cornerRadius = 5.0; 25     btn.layer.borderColor = [UIColor grayColor].CGColor; 26     btn.layer.borderWidth = 1.0; 27 } 28  29 - (void)layoutUI { 30     //圖片視圖 31     _imgVAnimation.layer.masksToBounds = YES; 32     _imgVAnimation.layer.cornerRadius = kCornerRadiusOfImage; 33     _imgVAnimation.layer.borderColor = [UIColor orangeColor].CGColor; 34     _imgVAnimation.layer.borderWidth = 2.0; 35      36     //按鈕 37     [self modifyLayerForButton:_btnAnimation1]; 38     [self modifyLayerForButton:_btnAnimation2]; 39 } 40  41 - (IBAction)btnAnimation1DidPush:(id)sender { 42     //移到右下角;使用關鍵幀動畫,移動路徑為預定的貝塞爾曲線路徑 43     CGPoint fromPoint = _imgVAnimation.center; 44     CGFloat toPointX = self.view.frame.size.width - kCornerRadiusOfImage; 45     CGFloat toPointY = self.view.frame.size.height - kCornerRadiusOfImage; 46     CGPoint toPoint = CGPointMake(toPointX, toPointY); 47     CGPoint controlPoint = CGPointMake(toPointX, 0.0); 48      49     UIBezierPath *path = [UIBezierPath bezierPath]; 50     [path moveToPoint:fromPoint]; 51     [path addQuadCurveToPoint:toPoint controlPoint:controlPoint]; 52      53     CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 54     positionAnimation.path = path.CGPath; 55     positionAnimation.removedOnCompletion = YES; 56      57     //變?。皇褂没A動畫 58     CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; 59     transformAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; 60     transformAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]; //設置 X 軸和 Y 軸縮放比例都為1.0,而 Z 軸不變 61     transformAnimation.removedOnCompletion = YES; 62      63     //透明;使用基礎動畫 64     CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 65     opacityAnimation.fromValue = [NSNumber numberWithFloat:1.0]; 66     opacityAnimation.toValue = [NSNumber numberWithFloat:0.1]; 67     opacityAnimation.removedOnCompletion = YES; 68      69     //組合效果;使用動畫組 70     CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 71     animationGroup.animations = @[ positionAnimation, transformAnimation, opacityAnimation ]; 72     animationGroup.duration = 1.0; //設置動畫執行時間;這里設置為1.0秒 73     animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; //設置媒體調速運動;默認為 kCAMediaTimingFunctionLinear,即為線型間隔;這里設置為 kCAMediaTimingFunctionEaseIn,即先慢后快,相當于有個加速度 74     animationGroup.autoreverses = YES; //設置自動倒退,即動畫回放;默認值為NO 75     [_imgVAnimation.layer addAnimation:animationGroup forKey:nil]; 76 } 77  78 - (IBAction)btnAnimation2DidPush:(id)sender { 79     //向右移動;使用關鍵幀動畫,移動路徑為預定的直線路徑 80     CGPoint fromPoint = _imgVAnimation.center; 81     CGPoint toPoint = CGPointMake(fromPoint.x + 100.0, fromPoint.y); 82      83     UIBezierPath *path = [UIBezierPath bezierPath]; 84     [path moveToPoint:fromPoint]; 85     [path addLineToPoint:toPoint]; 86      87     CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 88     positionAnimation.path = path.CGPath; 89     positionAnimation.removedOnCompletion = YES; 90      91     //旋轉;使用基礎動畫 92     CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; 93     transformAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; 94     transformAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0.0, 0.0, 1.0)]; //設置沿著 Z 軸順時針旋轉90度;注意 CATransform3DMakeRotation 總是按最短路徑來選擇,當順時針和逆時針的路徑相同時(e.g. M_PI),會使用逆時針 95     transformAnimation.repeatCount = 8.0; //設置動畫播放重復次數;這里設置為8.0次,共720度 96     transformAnimation.duration = 0.5; //設置動畫執行時間;這里設置為0.5秒 97     transformAnimation.cumulative = YES; //設置是否累積;默認值為NO,這里設置為YES,看起來才動畫效果連貫 98     transformAnimation.removedOnCompletion = YES; 99     100     //組合效果;使用動畫組101     CAAnimationGroup *animationGroup = [CAAnimationGroup animation];102     animationGroup.animations = @[ positionAnimation, transformAnimation ];103     animationGroup.duration = 4.0; //設置動畫執行時間;這里設置為4.0秒104     animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; //設置媒體調速運動;默認為 kCAMediaTimingFunctionLinear,即為線型間隔;這里設置為 kCAMediaTimingFunctionEaseIn,即先慢后快,相當于有個加速度105     animationGroup.autoreverses = YES; //設置自動倒退,即動畫回放;默認值為NO106     107     //以下兩句是『動畫結束后回到初始狀態的現象』的解決方法;這里沒用到108     //animationGroup.removedOnCompletion = NO; //設置是否完成后從對應的所屬圖層移除他,默認為YES109     //animationGroup.fillMode = kCAFillModeForwards; //設置動畫填充模式;默認值為 kCAFillModeRemoved,即動畫執行完就移除,變回原來的狀態,這里設置為 kCAFillModeForwards,即保持向前的狀態110     [_imgVAnimation.layer addAnimation:animationGroup forKey:nil];111 }112 113 @end

Main.storyboard

 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyaccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vXZ-lx-hvc"> 3     <dependencies> 4         <deployment identifier="iOS"/> 5         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/> 6     </dependencies> 7     <scenes> 8         <!--View Controller--> 9         <scene sceneID="ufC-wZ-h7g">10             <objects>11                 <viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">12                     <layoutGuides>13                         <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>14                         <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>15                     </layoutGuides>16                     <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">17                         <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>18                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>19                         <subviews>20                             <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="Emoticon_tusiji_icon2" translatesAutoresizingMaskIntoConstraints="NO" id="j2r-O5-Hj2">21                                 <rect key="frame" x="20" y="40" width="150" height="150"/>22                             </imageView>23                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aiO-kP-xCF">24                                 <rect key="frame" x="20" y="243" width="150" height="50"/>25                                 <state key="normal" title="移到右下角變小透明">26                                     <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>27                                 </state>28                                 <connections>29                                     <action selector="btnAnimation1DidPush:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="7Z2-yc-1vS"/>30                                 </connections>31                             </button>32                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="圖片操作:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YH5-Oi-KEH">33                                 <rect key="frame" x="20" y="208" width="150" height="21"/>34                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>35                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>36                                 <nil key="highlightedColor"/>37                             </label>38                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hSL-o5-Ism">39                                 <rect key="frame" x="20" y="311" width="150" height="50"/>40                                 <state key="normal" title="旋轉并向右移動">41                                     <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>42                                 </state>43                                 <connections>44                                     <action selector="btnAnimation2DidPush:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="lC4-zx-uIb"/>45                                 </connections>46                             </button>47                         </subviews>48                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>49                     </view>50                     <connections>51                         <outlet property="btnAnimation1" destination="aiO-kP-xCF" id="kSp-82-S2R"/>52                         <outlet property="btnAnimation2" destination="hSL-o5-Ism" id="6Mz-Wd-xfN"/>53                         <outlet property="imgVAnimation" destination="j2r-O5-Hj2" id="Gmp-iW-kaX"/>54                     </connections>55                 </viewController>56                 <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>57             </objects>58         </scene>59     </scenes>60     <resources>61         <image name="Emoticon_tusiji_icon2" width="150" height="150"/>62     </resources>63 </document>

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美中文字幕在线播放| 日韩毛片在线看| 日韩中文字幕在线精品| 91精品国产色综合久久不卡98口| 精品久久久久久国产91| 国产精品视频精品视频| 国产精品老牛影院在线观看| 欧美成人精品不卡视频在线观看| 怡红院精品视频| 欧美国产第二页| 色诱女教师一区二区三区| 亚洲男人天天操| 欧美亚洲视频一区二区| 精品视频在线导航| www.日韩av.com| 久久久久久999| 激情亚洲一区二区三区四区| 亚洲美女喷白浆| 久久99精品久久久久久琪琪| 国产精品视频一区二区三区四| 在线播放国产一区中文字幕剧情欧美| 欧美黑人一级爽快片淫片高清| 热久久美女精品天天吊色| 亚洲乱亚洲乱妇无码| 久久久久久国产精品| 亚洲午夜色婷婷在线| 国产午夜精品免费一区二区三区| 美女999久久久精品视频| 久久成人精品电影| 亚洲国产成人久久综合| 亚洲a级在线播放观看| 综合136福利视频在线| 国产精品久久久久久久久男| 精品香蕉在线观看视频一| 国产91精品久久久| 92看片淫黄大片欧美看国产片| 亚洲最大激情中文字幕| 欧美精品久久久久久久免费观看| 亚洲aⅴ男人的天堂在线观看| 色婷婷综合成人| 亚洲最新av在线网站| 日日噜噜噜夜夜爽亚洲精品| 国产91在线播放精品91| www国产精品视频| 欧美乱大交xxxxx另类电影| 亚洲免费视频网站| 日韩在线观看成人| 欧美黑人又粗大| 亚洲国产美女久久久久| 精品日本美女福利在线观看| 日韩免费在线观看视频| 久久久久久久久久久免费精品| 影音先锋欧美在线资源| 欧美性受xxx| 精品无人区乱码1区2区3区在线| 一区二区三区视频免费| 日韩在线观看高清| 91亚洲精华国产精华| 国产视频精品xxxx| 亚洲午夜色婷婷在线| 亚洲天堂免费视频| 欧美精品在线观看91| 国产精品第一第二| 欧美精品videos性欧美| 色哟哟网站入口亚洲精品| 精品一区二区三区四区在线| 日韩免费电影在线观看| 亚洲国产精品久久91精品| 亚洲国产成人精品电影| 亚洲激情久久久| 一区二区国产精品视频| 91免费看片在线| 国产欧美一区二区三区视频| xvideos亚洲人网站| 欧美日韩中文字幕在线| 亚洲精品久久视频| 国产亚洲欧洲在线| 欧美久久精品午夜青青大伊人| 欧美一级黄色网| 欧美电影免费观看电视剧大全| 国产综合在线看| 亚洲精品久久久久久久久久久久| 日韩精品亚洲视频| 最近2019中文字幕第三页视频| 高清欧美性猛交xxxx黑人猛交| 国产成人激情小视频| 91网站免费看| 久久精品中文字幕免费mv| 国内精久久久久久久久久人| 欧美大码xxxx| 精品亚洲一区二区三区四区五区| 欧美激情一级精品国产| 亚洲美女黄色片| 国产精品678| 黄色成人在线播放| 久久久久久成人| 欧美日韩性生活视频| 伦理中文字幕亚洲| 亚洲香蕉成人av网站在线观看| 日韩综合中文字幕| 欧美老女人性视频| 久热精品在线视频| 日韩欧美在线播放| 庆余年2免费日韩剧观看大牛| 亚州av一区二区| 亚洲第一福利在线观看| 久久久久久久久久av| 欧美人交a欧美精品| 亚洲第一区中文字幕| 国产一区二区av| 日韩精品极品毛片系列视频| 日韩av网站大全| 成人性生交xxxxx网站| 一个人看的www久久| 亚洲一区二区三区视频| 日本sm极度另类视频| 国产精品欧美在线| 欧美高清视频在线播放| 亚洲精品国精品久久99热| 欧美性猛交xxxxx水多| 亚洲欧美激情另类校园| 亚洲男人av电影| 91成人福利在线| 国产一区二区三区视频免费| 久久久久久久爱| 精品自在线视频| 清纯唯美日韩制服另类| 精品久久久久久久中文字幕| 亚洲毛片在线免费观看| 91久久国产精品| 动漫精品一区二区| 亚洲精品久久久一区二区三区| 成人国产在线视频| 亚洲天堂男人天堂女人天堂| 91精品国产色综合久久不卡98| 亚洲精品不卡在线| 亚洲精品短视频| 中文字幕av一区中文字幕天堂| 在线视频国产日韩| 欧美性猛交xxxx乱大交极品| 精品激情国产视频| 日韩精品中文字幕在线观看| 亚洲色图18p| 亚洲欧洲xxxx| 国产色视频一区| 日韩网站免费观看高清| 视频在线观看99| 日韩精品在线视频观看| 欧美理论片在线观看| 一本色道久久88亚洲综合88| 91高清免费视频| 色琪琪综合男人的天堂aⅴ视频| 精品一区二区电影| 亚洲日韩欧美视频| 国产丝袜精品视频| 欧美裸体xxxx| 日韩欧美国产高清91| 7m第一福利500精品视频| 2018国产精品视频| 国产一区深夜福利| 懂色av中文一区二区三区天美| 日韩av片永久免费网站| 国产视频一区在线| 色偷偷88888欧美精品久久久|