基於CAReplicatorLayer建立動畫

2021-09-11 14:50:19 字數 1657 閱讀 6819

這是2023年3月的新加入的ios動畫,你可能從來沒有聽說過careplicatorlayer,那是乙個很酷難以理解但強大的coreanimation類。

先上效果圖

20行**建立動畫,直接上**

/** careplicatorlayer可以複製自己子層的layer,並且複製的出來的layer和原來的子layer擁有相同的動效*/

careplicatorlayer *replicatorlayer = [careplicatorlayer layer];

replicatorlayer.bounds = cgrectmake(0.0,0.0,100.0,100.0);

replicatorlayer.cornerradius = 10.0;

/** 檢視相對于父檢視的重心位置*/

replicatorlayer.position = self.center;

replicatorlayer.backgroundcolor = [uicolor colorwithred:0.1 green:0.1 blue:0.1 alpha:0.1].cgcolor;

[self.layer addsublayer:replicatorlayer];

calayer *dot = [calayer layer];

dot.bounds = cgrectmake(0, 0, 10, 10);

dot.position = cgpointmake(50, 20);

dot.backgroundcolor = [uicolor colorwithred:0.1 green:0.1 blue:0.1 alpha:0.6].cgcolor;

dot.cornerradius = 5;

dot.maskstobounds = yes;

[replicatorlayer addsublayer:dot];

cgfloat count = 10.0;

replicatorlayer.instancecount = count; //小圓圈的個數

cgfloat nrdots = 2 * m_pi/count;

replicatorlayer.instancetransform = catransform3dmakerotation(nrdots, 0, 0, 1); //每次旋轉的角度等於2π/ 10

cabasicanimation *animation = [cabasicanimation animationwithkeypath:@"transform.scale"];

animation.duration = 1; //1秒的延遲動畫。在到原來的點上做縮放變化

animation.fromvalue = @(1);

animation.tovalue = @(0.1);

animation.repeatcount = maxfloat;

[dot addanimation:animation forkey:nil];

replicatorlayer.instancedelay = 1.0/count; //使動畫動起來的秘訣就是給出一點延遲到每乙個副本

dot.transform = catransform3dmakescale(0.01, 0.01, 0.01); //解決旋轉銜接效果

複製**

AspectJ基於xml和基於註解

一 基於xml 執行的切入點中具體方法有返回值,則方法結束會立即執行後置通知,然後再執行環繞通知的放行之後的 2 連線點即所有可能的方法,切入點是正真被切的方法,連線點方法名 其中,只有環繞通知的切入點引數不一樣,是可以放行的切入點 3 異常通知是處理異常 切面類中的異常通知的方法引數列表中異常引數...

拓撲排序(基於dfs 基於佇列)

dfs函式的返回值表示是否成環,若存在有向環,則不存在拓撲排序。不包含有向環的有向圖稱為有向無環圖 dag 可以借助dfs完成拓撲排序,在訪問完乙個結點時把他加入當前拓撲序的首部。舉個栗子 比如乙個 1,2 1,3 2,3 的有向無環圖,就先搜尋1,再遞迴搜尋2,再搜尋3,3沒有出度了,於是放進拓撲...

基於insert update delete的注入

inset注入原理 所謂inset注入就是指我們前端註冊的資訊會被後台通過insert操作插入到資料庫裡邊去,若此時後台沒有做出相應的處理就會構成insert注入。insert注入方法 insert用法例如 insert into member username,pw,phonenum,email,...