項目中為了顯示設備正在運行特用一個旋轉行走漸變的圈表示,如下圖外圈的小圓點:(里圈進度條已在前面文章中總結原理及代碼)
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
有不足處和不準確地方歡迎改正,覺得有用或者喜歡記得點顆??哦。