動畫-CGAffineTransform

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
    
}
相關文章
相關標籤/搜索