日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CGAffineTransform

發(fā)布時(shí)間:2023/12/9 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CGAffineTransform 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
//移動(dòng)效果 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 );//只對(duì)局部產(chǎn)生效果 CGRect CGRectApplyAffineTransform ( CGRect rect, CGAffineTransform t );//判斷兩個(gè)AffineTrans是否相等 bool CGAffineTransformEqualToTransform ( CGAffineTransform t1, CGAffineTransform t2 );//獲得Affine Transform CGAffineTransform CGContextGetUserSpaceToDeviceSpaceTransform ( CGContextRef c );//下面的函數(shù)只起到查看的效果,比如看一下這個(gè)用戶空間的點(diǎn),轉(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 );

?

了解動(dòng)畫需要先了解仿射變換,先在View中添加一個(gè)按鈕和一個(gè)圖片, 通過(guò)這演示常見(jiàn)的變換,直接上碼:

#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)我實(shí)驗(yàn)平移時(shí),將下面代碼放在按鈕點(diǎn)擊方法中,第一個(gè)方法第一次點(diǎn)擊有效,第二個(gè)是每次點(diǎn)擊都會(huì)平移,第三個(gè)不會(huì)平移

//平移變換imgview.transform=CGAffineTransformMakeTranslation(10, 10); //每次移動(dòng)參照點(diǎn)都是初始點(diǎn)imgview.transform=CGAffineTransformTranslate(imgview.transform, 20, 20);//平移參照第一個(gè)參數(shù)的點(diǎn)imgview.transform=CGAffineTransformIdentity;//初始點(diǎn)

?二、旋轉(zhuǎn)

//旋轉(zhuǎn)imgview.transform=CGAffineTransformMakeRotation(M_PI/4);//旋轉(zhuǎn)參照初始值 正數(shù)順時(shí)針 負(fù)數(shù)逆時(shí)針imgview.transform=CGAffineTransformRotate(imgview.transform, -M_PI/4);//旋轉(zhuǎn)參照第一個(gè)參數(shù)的值

?三、縮放

// 縮放imgview.transform=CGAffineTransformScale(imgview.transform,0.8,0.8);//在第一個(gè)參數(shù)的基礎(chǔ)上縮放 第二三參數(shù)1時(shí)為正常大小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)用此行代碼并不會(huì)產(chǎn)生翻轉(zhuǎn)效果,因?yàn)楹愕染仃?#xff0a;恒等矩陣還是恒等矩陣,這樣就沒(méi)有變化CGAffineTransform AffineTransform =CGAffineTransformMake(0, 1, 1, 1, 1, 0);imgview.transform=CGAffineTransformInvert(AffineTransform);

五、合并

//合并 將兩個(gè)仿射合并成一個(gè)仿射效果 // 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的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。