transform我們一般稱為形變屬性,其本質是通過矩陣變化改變控制項的大小、位置、角度等,這裡我們通過一個例子來看一下具體的操作,在下面的例子中我們也會看到UIImageView控制項的常用操作。
//旋轉- (IBAction)rotationButtonPressed:(id)sender{ self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, M_PI_4);}//縮放- (IBAction)scaleButtonPressed:(id)sender{ self.imageView.transform = CGAffineTransformScale(self.imageView.transform, 0.9, 0.9);}- (IBAction)moveButtonPressed:(id)sender{ _imageView.transform = CGAffineTransformTranslate(self.imageView.transform, 0, 10);}
獲得CGAffineTransform有多種方法,例如使用CGAffineTransformMake,但是對於矩陣操作相對比較麻煩,事實上iOS已經為我們準備好了三個方法:CGAffineTransformMakeRotation(旋轉)、CGAffineTransformMakeScale(縮放)、CGAffineTransformMakeTranslation(移動); transform進行旋轉、縮放、移動的時候不是在原來的基礎上增量形變的,因此如果需要持續在原來的基礎上旋轉、縮放、移動那麼每次需要在原來的基礎上增加或減少。當然,我們可以定義一個全域變數進行累加,但是事實上iOS已經為我們提供好了三個對應的方法,分別用於在原來的角度、縮放、移動位置的基礎上做出修改:CGAffineTransformRotate、CGAffineTransformScale、CGAffineTransformTranslate;