UIKit-UIView二维图形Affine几何基本变换
来源:互联网 发布:淘宝注册网址 编辑:程序博客网 时间:2024/06/01 15:49
UIView的变换主要包括缩放,旋转,翻转,平移等。
一、变换矩阵几何变换(变换矩阵的证明见拓展部分):
根本的变换基于计算机图形学二维矩阵变换的知识,需要根据需要改变二维变换的一个三维变换矩阵的参数来设置,基本变换用到CGAffineTransform三维矩阵的6个参数:
view.transform =CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d,CGFloat tx, CGFloat ty)
二、另外系统封装了几个常用的图形变换函数:(同时明确Cocoa坐标系原点在左上角)
测试案例:
#import"AffineViewController.h"@interfaceAffineViewController () @property(nonatomic) UIImageView *imageView;@end@implementationAffineViewController - (void)viewDidLoad{ [super viewDidLoad]; // 背景色 self.view.backgroundColor = RGBColor(230, 230,230); //测试二维图形变换 [self transformTest];} -(void)transformTest { //定义一个UIView _imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 150, 150)]; //设置中心 _imageView.center = self.view.center; //背景颜色 _imageView.backgroundColor = [UIColorpurpleColor]; //贴图 [_imageView setImage:[UIImageimageNamed:@"male"]]; //图片内容适应 _imageView.contentMode =UIViewContentModeCenter; //显示 [self.view addSubview:_imageView]; //逆时针旋转90度按钮 UIButton *btn_transform = [UIButtonbuttonWithType:UIButtonTypeSystem]; [btn_transformsetCenter:CGPointMake(ApplicationW/2,ApplicationH-100)]; [btn_transform setTitle:@"上下翻转缩放"forState:UIControlStateNormal]; [btn_transform sizeToFit]; [btn_transform addTarget:selfaction:@selector(click)forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn_transform];} - (void)click{ //顺时针旋转90度 //CGAffineTransform unClockWise90 =CGAffineTransformMakeRotation(90.0*(M_PI/180.0)); //向右移动20像素,向上移动30像素 //CGAffineTransform move =CGAffineTransformMakeTranslation(20.0, -30.0); //宽度缩小一倍,高度两倍 CGAffineTransform scale =CGAffineTransformMakeScale(0.5, 2.0); //上下翻转 CGAffineTransform upsideDown =CGAffineTransformScale(_imageView.transform, 1.0, -1.0); //上下翻转缩放 CGAffineTransform contact =CGAffineTransformConcat(upsideDown, scale); //变换 _imageView.transform = contact;} @end
三、拓展部分(变换矩阵的线性代数几何证明):
。。。
四、补充:
OC宏定义的几个数学常量(包括角度):
#define M_E
#defineM_LOG2E
#defineM_LOG10E
#defineM_LN2
#defineM_LN10
#defineM_PI
#defineM_PI_2
#defineM_PI_4
#defineM_1_PI
#defineM_2_PI
#defineM_2_SQRTPI
#defineM_SQRT2
#defineM_SQRT1_2
#defineMAXFLOAT
- UIKit-UIView二维图形Affine几何基本变换
- (15)二维图形基本几何变换
- 二维图形几何变换
- [C语言]二维图形基本几何变换的实现
- 二维图形的几何变换
- 二维图形的几何变换
- 二维图形的几何变换
- MFC 二维图形几何变换
- 计算机图形学:基本二维几何变换
- 基本几何变换与图形剪裁现实
- HDU 4998 Rotate (二维图形几何变换)
- 三维图形几何变换
- 参数图形几何变换
- 图形的几何变换
- 计算机图形学(四)_几何变换_1_基本的二维几何变换(一)
- 计算机图形学(四)_几何变换_1_基本的二维几何变换(二)_旋转
- 计算机图形学(四)_几何变换_1_基本的二维几何变换(三)_缩放
- 图形二维变换
- IOS底部导航设置与页面多级跳转
- 工厂方法
- UIKit-boundingRectWithSize计算多行UILabel的文字高度
- UIKit-UIView常用设置
- 文章标题
- UIKit-UIView二维图形Affine几何基本变换
- UIKit-UIAlertView,UIActionSheet,UIAlertController使用方法(完整版)
- UIKit-UIDatePicker和UIPickerView
- Foundation-几种段落排版格式NSMutableParagraphStyle
- 【codevs1166】矩阵取数游戏 DP+高精
- Volley原理分析之网络请求层
- IOS判断应用是否第一次打开&UIScrollView实现新应用第一打开欢迎介绍页面
- HTML5页面跳转的几种方法
- JavaScript实现本地数据简单存取以及Json数据存取