iOS自定義Loading旋轉加載圈(附代碼)

項目中為了顯示設備正在運行特用一個旋轉行走漸變的圈表示,如下圖外圈的小圓點:(里圈進度條已在前面文章中總結原理及代碼)


iOS的繪圖一般是在CALayer上面繪制,所以上圖的所有圈圈都是在layer上。

1.現在View上創建一個小圓圈,并給這個圓圈添加Animation和3D變換

2.然后再用CAReplicatorLayer這個類復制多個同樣的圓,并設置圓的位置和3D變換

這里特別的記錄一下CATransform3D和CAReplicatorLayer的作用和使用:

2D是基于平面位置的坐標,只有x,y軸,這里的3D就多加了一個z軸,在2D或3D空間中,對一個物體執行平移、縮放或旋轉這些操作時需要使用矩陣運算。

CATransform3D:是一個4維矩陣如下:

structCATransform3D

{

CGFloatm11, m12, m13, m14;

CGFloatm21, m22, m23, m24;

CGFloatm31, m32, m33, m34;

CGFloatm41, m42, m43, m44;

};

CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz):是沿著x,y,z的位置上的平移。

CATransform3DMakeScale(CGFloat sx, CGFloat sy, CGFloat sz):是x,y,z的縮放倍數。

CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x, CGFloat y, CGFloat z):是圖形的旋轉效果。

angle:旋轉的弧度,所以要把角度轉換成弧度:角度 * M_PI / 180。

x:向X軸方向旋轉。值范圍-1 --- 1之間

y:向Y軸方向旋轉。值范圍-1 --- 1之間

z:向Z軸方向旋轉。值范圍-1 --- 1之間

CAReplicatorLayer:

CAReplicatorLayer可以高效生成許多相似的圖層。它會繪制一個或多個圖層的子圖層,并在每個復制體上應用不同的變換。

如下函數,就是生成count個具有transform變換的copyLayer


有不足處和不準確地方歡迎改正,覺得有用或者喜歡記得點顆??哦。

詳細demo請在這里下載

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容