標籤:cal .com bsp net http 原因 -- 技術 view
在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像素。
這意味著變換的順序會影響最終的結果,也就是說旋轉之後的平移和平移之後的旋轉結果可能不同。
iOS 混合變換旋轉 CGAffineTransform 的使用