CoreAnimation (CALayer 動畫)

CoreAnimation基本介紹:

  • CoreAnimation動畫位于iOS框架的Media層
  • CoreAnimation動畫實現需要添加QuartzCore.Framework
  • CoreAnimation基本上是LayerAnimation

?

CoreAnimation分類:

CoreAnimation作用:

CoreAnimation

?

?

CALayer基本介紹

?

CALayer的常用屬性

?

CABasicAnimation

?

CAKeyframeAnimation

?

?

CAAnimationGroup

CASpringAnimation

?

XIB分別設置幾個button然后關聯方法,代碼展示:

 1 @interface ViewController ()
 2 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
 3 
 4 @end
 5 
 6 @implementation ViewController
 7 #pragma mark - CABasicAnimation
 8 - (IBAction)CABasicAnimation:(id)sender {
 9     // 第一步:創建動畫對象
10     CABasicAnimation *basicAnimation = [CABasicAnimation animation];
11     // 第二步:告訴layer層需要執行什么樣的動畫(后邊設置的內容為CALayer的相關屬性)
12     basicAnimation.keyPath = @"position";  // position 改變位置的
13     // 第三步:告訴layer從哪里來,到哪里去
14     basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
15     basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 600)];
16     // 注意點: 如果要實現圖片不會到原來點,需要以下兩句代碼
17     basicAnimation.removedOnCompletion = NO;
18     // 設置保存動畫狀態的內容
19     basicAnimation.fillMode = kCAFillModeForwards;
20     
21     // 第四步:設置動畫持續的時長
22     basicAnimation.duration = 6.0f;
23     // 第五步:將要執行的動畫添加到calayer上
24     [self.imageView.layer addAnimation:basicAnimation forKey:@"basic"];
25     // *************翻轉效果
26     CABasicAnimation *basic = [CABasicAnimation animation];
27     basic.keyPath = @"transform";
28     // 設置翻轉的地方
29     basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 0, 1)];
30     basic.duration = 0.2f;
31     [self.imageView.layer addAnimation:basic forKey:@"aaaa"];
32     // 根據key去移除動畫
33     //    [self.imageView.layer removeAnimationForKey:@"basic"];
34 }
35 
36 #pragma mark - CAKeyframeAnimation
37 - (IBAction)CAKeyAnimation:(id)sender {
38     // 第一步:創建對象
39     CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animation];
40     // 第二步:設置動畫軌跡
41     keyAnimation.keyPath = @"transform.rotation";
42     // 第三步:設置翻轉的角度 (弧度計算公式:度數/180*M_PI)
43     keyAnimation.values = @[@(-300 / 180.0 * M_PI), @(300 / 180.0 * M_PI), @(-180 / 180.0 * M_PI)];
44     // 第四步:設置時長
45     keyAnimation.duration = 15.0f;
46     // 第五步:添加動畫到layer層
47     [self.view.layer addAnimation:keyAnimation forKey:@"bbbb"];
48 }
49 
50 #pragma mark - CAAnimationGroup
51 - (IBAction)CAAnimationGroup:(id)sender {
52     // 平移動畫
53     CABasicAnimation *basic1 = [CABasicAnimation animation];
54     basic1.keyPath = @"transform.translation.y";    // 按照y軸平移
55     basic1.toValue = @(400);
56     // 縮小動畫
57     CABasicAnimation *basic2 = [CABasicAnimation animation];
58     basic2.keyPath = @"transform.scale";  // 縮小
59     basic2.toValue = @(0.3);
60     // 旋轉動畫
61     CABasicAnimation *basic3 = [CABasicAnimation animation];
62     basic3.keyPath = @"transform.rotation";   // 旋轉
63     basic3.toValue = @(M_PI);
64     
65     // 需要創建管理各個動畫的動畫組
66     CAAnimationGroup *group = [CAAnimationGroup animation];
67     group.animations = @[basic1,basic2,basic3];
68     // group 會自動分配時間
69     group.duration = 5.0f;
70     
71     [self.imageView.layer addAnimation:group forKey:@"ccccc"];
72 }
73 
74 #pragma mark - CASpring
75 - (IBAction)CASpring:(id)sender {
76     // 設置對象
77     CASpringAnimation *spring = [CASpringAnimation animation];
78     spring.keyPath = @"transform.scale";
79     spring.fromValue = @1;
80     spring.toValue = @0.2;
81     spring.duration = 3.0f;
82     
83     [self.imageView.layer addAnimation:spring forKey:@"ddddd"];
84 }
85 
86 @end

總結:

轉載于:https://www.cnblogs.com/crazygeek/p/5535996.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457858.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457858.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

匯編為什么分段執行總是執行不了_iOS匯編教程(六)CPU 指令重排與內存屏障...

系列文章iOS 匯編入門教程(一)ARM64 匯編基礎iOS 匯編入門教程(二)在 Xcode 工程中嵌入匯編代碼iOS 匯編入門教程(三)匯編中的 Section 與數據存取iOS 匯編教程(四)基于 LLDB 動態調試快速分析系統函數的實現iOS 匯編教程(五)Objc Block 的內存布局和匯編表示前言具有 ARM 體系…

GD32 使用stm32 固件庫

1、 系統 1) 晶振起振區別 描述:啟動時間,GD32 與STM32 啟動時間都是2ms,實際上GD 的執行效率快,所以ST 的HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)是2ms,但是這個宏定義值在GD 上時間就更加短了,所以要加大…

干將莫邪

干將莫邪也為凡鐵鑄成,只是善加鍛造、融入心神,而成上古神兵。寶劍從來都是雙刃,正邪之道,存乎一心。

js反混淆還原工具_SATURN反混淆框架

本文為看雪論壇精華文章看雪論壇作者ID:夢野間摘要:近幾年,軟件的混淆強度一直在不斷提升。基于編譯器的混淆已經成為業界事實上的標準,最近的一些論文也表明軟件的保護方式使用的是編譯器級別的混淆。在這篇文章中,我…

android 彈起鍵盤把ui頂上去的解決辦法

鍵盤輸入框上面的ui布局必須為Relative相對布局。然后設置 <activityandroid:name".activity.HomeActivity"Android:windowSoftInputMode"adjustPan|stateHidden"></activity>轉載于:https://www.cnblogs.com/zhaoleigege/p/5925831.html

python 多線程并發_尋找python大神!!!python如何多線程并發?

不是大神。嘗試回答一下。 首先解釋下什么叫做線程&#xff0c;什么叫做進程&#xff0c;在解釋這兩個概念前&#xff0c;我們還需要明白什么叫做GIL全局解釋器鎖。GIL 全局解釋器鎖&#xff1a; GIL(全局解釋器鎖&#xff0c;GIL 只有cpython有)&#xff1a;在同一個時刻&…

Nginx/Apache發大招

導讀網站程序的上傳目錄通常是不需要PHP執行解釋權限&#xff0c;通過限制目錄的PHP執行權限可以提網站的安全性&#xff0c;減少被攻擊的機率。下面和大家一起分享下如何在Apache和Nginx禁止上傳目錄里PHP的執行權限。 Apache下禁止指定目錄運行PHP腳本在虛擬主機配置文件中增…

第二輪沖刺-Runner站立會議08

今天完成的內容&#xff1a;簡單的做了一下主界面的美化和日歷界面的美化 遇到的問題&#xff1a;美化按鈕還不能自己自定義按鈕 如何解決&#xff1a;暫無思路 明天將要進行的內容&#xff1a;調試bug 轉載于:https://www.cnblogs.com/Againzg/p/5544301.html

STM32串口通信中使用printf發送數據配置方法 開發環境 Keil

STM32串口通信中使用printf發送數據配置方法(開發環境 Keil RVMDK) 已有 12456 次閱讀2011-6-29 23:29 | 在STM32串口通信程序中使用printf發送數據&#xff0c;非常的方便。可在剛開始使用的時候總是遇到問題&#xff0c;常見的是硬件訪真時無法進入main主函數&#xff0c;其實…

dmp文件查看表空間_innoDb文件

一&#xff0e;文件總體概述InnoDb文件主要有以下文件1. 參數文件&#xff1a;啟動需要的各種參數作2. 日志文件&#xff1a;記錄mysql實例某種條件做出的響應而寫入的文件&#xff0c;如錯誤日志、二進制日志、慢查詢日志、查詢日志等3. Socket文件&#xff1a;連接需要的文件…

論文筆記之:Deep Attention Recurrent Q-Network

Deep Attention Recurrent Q-Network 5vision groups 摘要&#xff1a;本文將 DQN 引入了 Attention 機制&#xff0c;使得學習更具有方向性和指導性。&#xff08;前段時間做一個工作打算就這么干&#xff0c;誰想到&#xff0c;這么快就被這幾個孩子給實現了&#xff0c;自愧…

Codeforces Round #354 (Div. 2)

貪心 A Nicholas and Permutation #include <bits/stdc.h>typedef long long ll; const int N 1e5 5; int a[105]; int pos[105];int main() {int n;scanf ("%d", &n);for (int i1; i<n; i) {scanf ("%d", ai);pos[a[i]] i;}int ans abs …

linux c程序中內核態與用戶態內存存儲問題

Unix/Linux的體系架構 如上圖所示&#xff0c;從宏觀上來看&#xff0c;Linux操作系統的體系架構分為用戶態和內核態&#xff08;或者用戶空間和內核&#xff09;。內核從本質上看是一種軟件——控制計算機的硬件資源&#xff0c;并提供上層應用程序運行的環境。用戶態即上層應…

線程自動退出_C++基礎 多線程筆記(一)

join & detachjoin和detach為最基本的用法&#xff0c;join可以使主線程&#xff08;main函數&#xff09;等待子線程&#xff08;自定義的function_1函數&#xff09;完成后再退出程序&#xff0c;而detach可以使子線程與主線程毫無關聯的獨立運行&#xff0c;當主線程執行…

WEB在線預覽PDF

這是我在博客園發表的第一篇文章。以后會陸續把在線預覽其他格式文檔的解決方案發表出來。 解決思路&#xff1a;把pdf轉換成html顯示。 在線預覽pdf我暫時了解3種解決方案&#xff0c;歡迎大家補充。 方案一&#xff1a; 利用pdf2html軟件將PDF轉換成HTML。 用法: PDF2HTML [選…

[算法]判斷一個數是不是2的N次方

如果一個數是2^n&#xff0c;說明這個二進制里面只有一個1。除了1. a (10000)b a-1 (01111)b a&(a-1) 0。 如果一個數不是2^n&#xff0c; 說明它的二進制里含有多一個1。 a (1xxx100)b a-1(1xxx011)b 那么 a&(a-1)就是 (1xxx000)b&#xff0c; 而不會為0。 所以可…

VMware Ubuntu 全屏問題解決

在終端中輸入&#xff1a; sudo apt install open-vm* 回車 自動解決

數組拼接時中間怎么加入空格_【題解二維數組】1123:圖像相似度

1123&#xff1a;圖像相似度時間限制: 1000 ms 內存限制: 65536 KB【題目描述】給出兩幅相同大小的黑白圖像(用0-1矩陣)表示&#xff0c;求它們的相似度。說明&#xff1a;若兩幅圖像在相同位置上的像素點顏色相同&#xff0c;則稱它們在該位置具有相同的像素點。兩幅圖像的…

(舊)子數涵數·C語言——條件語句

首先&#xff0c;我們講一下理論知識&#xff0c;在編程中有三種結構&#xff0c;分別是順序結構、條件結構、循環結構&#xff0c;如果用流程圖來表示的話就是&#xff1a; 那么在C語言中&#xff0c;如何靈活運用這三種結構呢&#xff1f;這就需要用到控制語句了。 而條件語句…

apache.commons.lang.StringUtils 使用心得

apache.commons.lang.StringUtils 使用心得 轉載于:https://www.cnblogs.com/qinglizlp/p/5549687.html