CoreGraphics框架中的CGAffineTransform類可用於設定UIView的transform屬性,控制視圖的縮放、旋轉和平移操做.框架
transform 是一種狀態,而且只有一種狀態.動畫
UIView的transform屬性是一個結構體變量, 表明一種狀態, 經過UIView的動畫效果, 能夠實現縮放, 旋轉和平移操做.code
- (IBAction)transition:(id)sender { // 1. 旋轉操做, 參數是旋轉的角度, 在原始的狀態下建立一種新的狀態 //CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4); // 2. 旋轉操做, 第一個參數是參照的狀態, 第二個參數是最終的參照狀態上作形變的狀態. //CGAffineTransform transform = CGAffineTransformRotate(self.imageView.transform, M_PI_4); // 3. 縮放操做, 參數是縮放的比例, 是原來的多少倍, 在原始狀態下建立一種新的狀態 CGAffineTransform transform1 = CGAffineTransformMakeScale(0.5, 0.5); // 4. 縮放操做, 以指定的狀態爲參照轉換到新的狀態. //CGAffineTransform transform = CGAffineTransformScale(self.imageView.transform, 0.9, 0.9); // 5. 平移操做, 參數是在x,y軸上平移的距離 //CGAffineTransform transform = CGAffineTransformMakeTranslation(20, 200); // 6. 平移操做 //CGAffineTransform transform2 = CGAffineTransformTranslate(self.imageView.transform, 0, 200); // 7. 將兩種形變 合併/混合到一塊. // CGAffineTransform transform = CGAffineTransformConcat(transform1, transform2); // 8. 比較兩個狀態是否相等. // BOOL isEqual = CGAffineTransformEqualToTransform(<#CGAffineTransform t1#>, <#CGAffineTransform t2#>) // 9. 判斷是否是原始狀態 // BOOL isIdentity = CGAffineTransformIsIdentity(<#CGAffineTransform t#>); // 10. 狀態翻轉, 放大變成縮小, 上移變成下移, CGAffineTransform transform = CGAffineTransformInvert(transform1); [UIView animateWithDuration:1.f animations:^{ self.imageView.transform = transform; }]; // 表示原始的狀態 . // CGAffineTransformIdentity }