美文网首页程序员
iOS transform(2D仿射)

iOS transform(2D仿射)

作者: userName | 来源:发表于2018-04-24 17:57 被阅读56次

主要分3个部分说明。
1.基础及矩阵概念
2.2D仿射
3.3D仿射

1.CGAffineTrans的API

带Make的:起点固定,每次控制的事件只针对起点。
不带Make的:为一个变换再加上平移,针对上一个位置,不针对起点。

//位移仿射
CGAffineTransformMakeTranslation
CGAffineTransformTranslate
//旋转仿射
CGAffineTransformMakeRotation
CGAffineTransformRotate
//缩放仿射
CGAffineTransformMakeScale
CGAffineTransformScale
//叠加仿射效果
CGAffineTransformConcat
//仿射矩阵方法,可以直接做效果叠加
CGAffineTransformMake (sx,shx,shy,sy,tx,ty)

2.仿射变换概念

个人理解就是:点p(以二维坐标为例)通过仿射矩阵C 后变成新的点p' 。
平移演化

//仿射矩阵
//A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵
//1行3列 * 3行3列 = 1行3列
[x,y,1] * [a  b  0] = [x',y',z']
          [c  d  0]
          [tx ty 1]


设a,d=1 c,b = 0 那么
x' = a*x + c*y + tx
y' = b*x + d*y + ty
z' = 0*x + 0*y + 1*1
就变成了
x' = x + tx
y' = y + ty

所以移动因子就是 tx ty。
再来看看方法:

向右移动300的仿射效果
CGAffineTransform translate = CGAffineTransformMakeTranslation(300, 0)
使用仿射基础方法 
CGAffineTransform translate = CGAffineTransformMake(1,0,0,1,300,0)
//CGAffineTransformMake(CGFloat a,CGFloat b,CGFloat c,CGFloat d,CGFloat tx,CGFloat ty)

缩放演化,旋转演化以上类似。

3.Tip

通过CGAffineTrans就可以实现贴纸的功能,根据手势对贴纸进行放大,缩小,旋转等功能。
我写的DEMO:点这跳转,记得点Star

关于翻转和一些3D变化就需要 CATransform3D,下一章再讲解。

相关文章

  • iOS开发经验(6)-Transform

    目录(transform) 基础及矩阵概念 2D仿射 3D仿射 1. 基础及矩阵概念 在iOS的动画效果中,变换是...

  • iOS transform(2D仿射)

    主要分3个部分说明。1.基础及矩阵概念2.2D仿射3.3D仿射 1.CGAffineTrans的API 带Make...

  • 016-iOS 动画机制

    iOS 动画大致有以下几类 UIView Transform 仿射变换 KeyFrame CoreAnimatio...

  • iOS 仿射变换和3D变换

    2D仿射变换 UIView的transform属性是一个CGAffineTransform类型,用于在二维空间做旋...

  • 高级动画学习心得笔记(五)变换

    5.1 仿射变换 5.1.1 仿射变换基础 UIView的transform属性是一个CGAffineTransf...

  • UICollectionView 和 UITableView 添

    本文中用到 transform ,如有不会用的,可先看下这里 iOS动画和特效:仿射变换-CGAffineTran...

  • iOS 仿射变换

    一、iOS 仿射变换CGAffineTransform详解IOS开发UI篇--仿射变换(CGAffineTrans...

  • 仿射变换Transform

    简介 CGAffineTransformCGAffineTransform是CoreGraphics的结构体,定义...

  • 仿射变换-CGAffineTransform

    CGAffineTransform是iOS封装的一套用于实现仿射变换效果的API,用于绘制2D图形,可以进行位移、...

  • 仿射机制

    仿射变换源于CoreGraphics框架,主要作用是绘制2D级别的图层,2D仿射变换是其下负责二维坐标到二维坐标的...

网友评论

    本文标题:iOS transform(2D仿射)

    本文链接:https://www.haomeiwen.com/subject/ncpjlftx.html