CGAffineTransform屬性


transform我們一般稱為形變屬性,其本質是通過矩陣變化改變控件的大小、位置、角度等,這里我們通過一個例子來看一下具體的操作,在下面的例子中我們也會看到UIImageView控件的常用操作。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.redView = [[UIView alloc]initWithFrame:CGRectMake(100, 200, 100, 100)];
    self.redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:self.redView];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [self Translate];
}

//旋轉
- (void)Rotate{
    self.redView.transform = CGAffineTransformRotate(self.redView.transform, M_PI_4);
}


//縮放
- (void)Scale{
     self.redView.transform = CGAffineTransformScale(self.redView.transform, 0.5, 0.5);
}


//移動
- (void)Translate{
    self.redView.transform = CGAffineTransformTranslate(self.redView.transform, 0, 50);
}

 

  • 獲得CGAffineTransform有多種方法,例如使用CGAffineTransformMake,但是對於矩陣操作相對比較麻煩,事實上iOS已經為我們准備好了三個方法:CGAffineTransformMakeRotation(旋轉)、CGAffineTransformMakeScale(縮放)、CGAffineTransformMakeTranslation(移動);
  • transform進行旋轉、縮放、移動的時候不是在原來的基礎上增量形變的,因此如果需要持續在原來的基礎上旋轉、縮放、移動那么每次需要在原來的基礎上增加或減少。當然,我們可以定義一個全局變量進行累加,但是事實上iOS已經為我們提供好了三個對應的方法,分別用於在原來的角度、縮放、移動位置的基礎上做出修改:CGAffineTransformRotate、CGAffineTransformScale、CGAffineTransformTranslate;

 

 

iOS開發UI篇—transframe屬性(形變)

1. transform屬性

在OC中,通過transform屬性可以修改對象的平移、縮放比例和旋轉角度

常用的創建transform結構體方法分兩大類

(1) 創建“基於控件初始位置”的形變

CGAffineTransformMakeTranslation(平移)

CGAffineTransformMakeScale(縮放)

CGAffineTransformMakeRotation(旋轉)

 

(2) 創建“基於transform參數”的形變

CGAffineTransformTranslate

CGAffineTransformScale

CGAffineTransformRotate

 

補充:

在OC中,所有跟角度相關的數值,都是弧度值,180° = M_PI

正數表示順時針旋轉

負數表示逆時針旋轉

 

提示:由於transform屬性可以基於控件的上一次的狀態進行疊加形變,例如,先旋轉再平移。因此在實際動畫開發中,當涉及位置、尺寸形變效果時,大多修改控件的transform屬性,而不是frame、bounds、center 。


免責聲明!

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



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