iOS 混合變換旋轉 CGAffineTransform 的使用


在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像素。

這意味着變換的順序會影響最終的結果,也就是說旋轉之后的平移和平移之后的旋
轉結果可能不同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM