CGAffineTransform
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                CGAffineTransform
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            //移動效果
CGAffineTransform CGAffineTransformMakeTranslation (    CGFloat tx,    CGFloat ty );CGAffineTransform CGAffineTransformTranslate (    CGAffineTransform t,    CGFloat tx,    CGFloat ty );//旋轉(zhuǎn)效果
CGAffineTransform CGAffineTransformMakeRotation (    CGFloat angle );CGAffineTransform CGAffineTransformRotate (    CGAffineTransform t,    CGFloat angle );//縮放效果
CGAffineTransform CGAffineTransformMakeScale (    CGFloat sx,    CGFloat sy );CGAffineTransform CGAffineTransformScale (    CGAffineTransform t,    CGFloat sx,    CGFloat sy );//反轉(zhuǎn)效果
CGAffineTransform CGAffineTransformInvert (    CGAffineTransform t );//只對局部產(chǎn)生效果
CGRect CGRectApplyAffineTransform (    CGRect rect,    CGAffineTransform t );//判斷兩個AffineTrans是否相等
bool CGAffineTransformEqualToTransform (    CGAffineTransform t1,    CGAffineTransform t2 );//獲得Affine Transform
CGAffineTransform CGContextGetUserSpaceToDeviceSpaceTransform (    CGContextRef c );//下面的函數(shù)只起到查看的效果,比如看一下這個用戶空間的點,轉(zhuǎn)換到設(shè)備空間去坐標(biāo)是多少CGPoint CGContextConvertPointToDeviceSpace (    CGContextRef c,    CGPoint point );CGPoint CGContextConvertPointToUserSpace (    CGContextRef c,    CGPoint point );CGSize CGContextConvertSizeToDeviceSpace (    CGContextRef c,    CGSize size );CGSize CGContextConvertSizeToUserSpace (    CGContextRef c,    CGSize size );CGRect CGContextConvertRectToDeviceSpace (    CGContextRef c,    CGRect rect );CGRect CGContextConvertRectToUserSpace (    CGContextRef c,    CGRect rect );
  
#define M_PI_2 1.57079632679489661923132169163975144?
#define M_PI_4 0.785398163397448309615660845819875721 @interface ViewController () {UIButton *btn;UIImageView *imgview; } @end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];btn=[UIButton buttonWithType:UIButtonTypeSystem];btn.frame=CGRectMake(30, 30, 50, 50);btn.backgroundColor=[UIColor redColor];[btn setTitle:@"按鈕" forState:UIControlStateNormal];[btn addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn];imgview=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"test.jpg"]];imgview.frame=CGRectMake(100, 100, 120, 120);[self.view addSubview:imgview];}
                        
                        
                        ?
了解動畫需要先了解仿射變換,先在View中添加一個按鈕和一個圖片, 通過這演示常見的變換,直接上碼:
#import "ViewController.h"#define M_PI 3.14159265358979323846264338327950288?#define M_PI_2 1.57079632679489661923132169163975144?
#define M_PI_4 0.785398163397448309615660845819875721 @interface ViewController () {UIButton *btn;UIImageView *imgview; } @end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];btn=[UIButton buttonWithType:UIButtonTypeSystem];btn.frame=CGRectMake(30, 30, 50, 50);btn.backgroundColor=[UIColor redColor];[btn setTitle:@"按鈕" forState:UIControlStateNormal];[btn addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn];imgview=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"test.jpg"]];imgview.frame=CGRectMake(100, 100, 120, 120);[self.view addSubview:imgview];}
?
?一.平移變換,當(dāng)我實驗平移時,將下面代碼放在按鈕點擊方法中,第一個方法第一次點擊有效,第二個是每次點擊都會平移,第三個不會平移
//平移變換imgview.transform=CGAffineTransformMakeTranslation(10, 10); //每次移動參照點都是初始點imgview.transform=CGAffineTransformTranslate(imgview.transform, 20, 20);//平移參照第一個參數(shù)的點imgview.transform=CGAffineTransformIdentity;//初始點?二、旋轉(zhuǎn)
//旋轉(zhuǎn)imgview.transform=CGAffineTransformMakeRotation(M_PI/4);//旋轉(zhuǎn)參照初始值 正數(shù)順時針 負(fù)數(shù)逆時針imgview.transform=CGAffineTransformRotate(imgview.transform, -M_PI/4);//旋轉(zhuǎn)參照第一個參數(shù)的值?三、縮放
// 縮放imgview.transform=CGAffineTransformScale(imgview.transform,0.8,0.8);//在第一個參數(shù)的基礎(chǔ)上縮放 第二三參數(shù)1時為正常大小imgview.transform=CGAffineTransformMakeScale(0.5,0.5);//在原視圖的基礎(chǔ)上縮放?四、翻轉(zhuǎn)
//翻轉(zhuǎn)// CGAffineTransform DefaultAffineTransform =CGAffineTransformMake(1, 0, 0, 1, 0, 0);//默認(rèn)// imgview.transform=CGAffineTransformInvert(imgview.transform); //調(diào)用此行代碼并不會產(chǎn)生翻轉(zhuǎn)效果,因為恒等矩陣*恒等矩陣還是恒等矩陣,這樣就沒有變化CGAffineTransform AffineTransform =CGAffineTransformMake(0, 1, 1, 1, 1, 0);imgview.transform=CGAffineTransformInvert(AffineTransform);五、合并
//合并 將兩個仿射合并成一個仿射效果 // CGAffineTransform AffineTransform1 =CGAffineTransformMakeScale(0.5,0.5);CGAffineTransform AffineTransform1=CGAffineTransformScale(imgview.transform,0.8,0.8);CGAffineTransform AffineTransform2 =CGAffineTransformMakeRotation(M_PI/4);CGAffineTransform AffineTransform3=CGAffineTransformConcat(AffineTransform1,AffineTransform2);CGAffineTransform AffineTransform4 =CGAffineTransformMake(0, 1, 1, 1, 1, 0);imgview.transform=CGAffineTransformConcat(AffineTransform3,AffineTransform4);?六、判斷是否相同
CGAffineTransform DefaultAffineTransform =CGAffineTransformMake(1, 0, 0, 1, 0, 0);CGAffineTransform DefaultAffineTransform1 =CGAffineTransformMake(1, 0, 0, 1, 0, 0); // CGAffineTransform AffineTransform1 =CGAffineTransformMakeScale(0.5,0.5);bool flag=CGAffineTransformEqualToTransform(DefaultAffineTransform, DefaultAffineTransform1);NSLog(@"%d",flag);?
轉(zhuǎn)載于:https://www.cnblogs.com/5ishare/p/4384177.html
總結(jié)
以上是生活随笔為你收集整理的CGAffineTransform的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: zoj 题目分类
- 下一篇: excel导入 HSSFWorkbook
