在ios 中, Core Graphics 提供了一系列的函數可以在一個變換的基礎上做深層次的變換,如果做一個既要縮放又要旋轉的變換,以下的方法比較實用。
CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy) --放大縮小 CGAffineTransformRotate(CGAffineTransform t, CGFloat angle) --旋轉的角度 CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty) --偏移量:在原始的位置上偏移tx像素和ty像素
具體使用如下:
1. 創建一個CGAffineTransform 的對象
2.設置要處理的過程
3.對於需要處理的對象進行賦值
代碼如下:
//創建CGAffineTransform的對象
CGAffineTransform transform = CGAffineTransformIdentity;
//設置 處理對象縮小50%
transform = CGAffineTransformScale(transform, 0.5, 0.5);
//設置 處理對象旋轉30度角
transform = CGAffineTransformRotate(transform, M_PI / 180.0 * 30);
//接着 偏移200像素
transform = CGAffineTransformTranslate(transform, 200, 0);
//對需要處理的對象賦值:affineTransform
self.imageView.layer.affineTransform = transform;
效果圖如下:

注意的地方:
需要注意的地方:圖片向右邊發生了平移,但並沒有指定距離那么遠 (200像素),另外它還有點向下發生了平移。原因在於當你按順序做了變換,上 一個變換的結果將會影響之后的變換,所以200像素的向右平移同樣也被旋轉了30 度,縮小了50%,所以它實際上是斜向移動了100像素。
這意味着變換的順序會影響最終的結果,也就是說旋轉之后的平移和平移之后的旋 轉結果可能不同。
