`

【深入iOS开发】iOS仿射变换和3D变换

阅读更多
2D仿射变换
UIView的transform属性是一个CGAffineTransform类型,用于在二维空间做旋转,缩放和平移。CGAffineTransform是一个可以和二维空间向量(例如CGPoint)做乘法的3X2的矩阵:

1240
Paste_Image.png
当对UIView应用变换矩阵,UIView图层矩形内的每一个点都被相应地做变换,从而形成一个新的四边形的形状。CGAffineTransform中的“仿射”的意思是无论变换矩阵用什么值,图层中平行的两条线在变换之后任然保持平行.

单位矩阵

CGAffineTransformIdentity

CGAffineTransform transform = CGAffineTransformIdentity;

结果:
(CGAffineTransform) transform = (a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0)
创建仿射变换矩阵

CGAffineTransformMakeRotation(CGFloat angle)  // 旋转
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy) // 缩放
CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)  // 平移
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4);

结果 :
(CGAffineTransform) transform = (a = 0.70710678118654757, b = 0.70710678118654746, c = -0.70710678118654746, d = 0.70710678118654757, tx = 0, ty = 0)
CGAffineTransform transform = CGAffineTransformMakeScale(0.8, 0.8);

结果:
(CGAffineTransform) transform = (a = 0.80000000000000004, b = 0, c = 0, d = 0.80000000000000004, tx = 0, ty = 0)
CGAffineTransform transform = CGAffineTransformMakeTranslation(10, 10);

结果:
(CGAffineTransform) transform = (a = 1, b = 0, c = 0, d = 1, tx = 10, ty = 10)
1240
Paste_Image.png

图中,灰色为旧图,蓝色为变化后的新图.
阅读全文直接点击:http://click.aliyun.com/m/10253/
分享到:
评论

相关推荐

    object-c实现多手势加仿射变换(面试题)

    在iOS中,CGAffineTransform是一个结构体,用于表示2D平面上的仿射变换,包括平移、旋转、缩放和剪切等操作。我们可以使用`CGAffineTransformMakeScale`、`CGAffineTransformMakeRotation`等函数创建变换,并通过...

    ios-UICollectionView滑动放大、仿射变换、瀑布流效果.zip

    后续bug修复、功能更新将会上传到GitHub GitHub地址:https://github.com/wangxiaocan/XCCollectionViewLayout.git 简书地址:https://www.jianshu.com/p/6fc45587f91b

    UICollectionView滑动放大、仿射变换、瀑布流效果 iOS

    本教程将深入探讨如何实现UICollectionView的滑动放大效果、仿射变换以及瀑布流布局,这些都是iOS应用中常见的高级交互和视觉设计元素。 首先,滑动放大效果是一种增强用户体验的设计,当用户在滚动...

    ios-iOS动画和特效demo.zip

    - [iOS动画和特效(七)仿射变换-CGAffineTransform](http://liuyanwei.jumppo.com/2015/11/24/iOS-affine-transfermation-animation.html) demo代码和教程 请到github上更新最新教程 ...

    affinestuff:在 CALayer 上使用仿射变换并查看 CGAffineTransform 字段的简单 iOS 示例

    总之,"affinestuff"项目是一个很好的学习资源,它能帮助iOS开发者深入理解`CGAffineTransform`和仿射变换在`CALayer`中的使用,提升你的Swift编程和动画设计技能。通过实践,你将能够创建出更多富有创意和视觉冲击...

    iOS动画--层的变换

    `transform`属性是一个3x3的仿射变换矩阵,用于描述图层的空间变换。通过调整这个矩阵,可以实现图层在屏幕上的平移、旋转、缩放甚至是扭曲等效果。 #### 常用的层变换操作 1. **平移(Translation)**:通过改变...

    放射变换demo

    放射变换在iOS开发中是一种强大的工具,用于创建各种动态和引人入胜的动画效果。在iOS中,这种变换主要通过Core Animation框架实现,特别是使用`CATransform3D`结构体来完成。放射变换可以改变视图的位置、大小、...

    iOS核心动画高级技巧

    变换部分介绍了仿射变换和3D变换,这是实现动画效果的基本工具。此外,还探讨了使用固体对象进行变换的技术。专用图层部分则深入讲解了不同类型的CALayer子类,如CAShapeLayer、CATextLayer等,每个子类都有其特定的...

    基于Maltab开发的仿射变换的数字图象置乱技术 MATLAB源程序代码(Maltab源代码+数据集+ppt).rar

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

    IOS开发仿微信右侧弹出视图实现

    2.仿射变换,用到仿射变换的缩放,平移和合并,视图动画 3.navigationBar的样式设置 实现效果,如下: 本Demo图片来源微信安装包解压得到的图片 实现代码: // // ViewController.m // appXX-微信更多工具栏 // // ...

    基于Python OpenCV的图像算法原理及代码示例|平移变换、尺度变换、旋转变换、仿射变换 求反、动态范围压缩、.zip

    包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...

    ios核心动画高级技巧

    在iOS开发中,UIView是视图的基类,它可以处理触摸事件和进行基于Core Graphics的绘图,以及执行仿射变换等动画。而CALayer类在概念上与UIView相似,负责管理图层树中的矩形块,包含内容和子图层,并且具备动画和...

    iOS-Cell倾斜的效果-26CollectionViewSlantedLayout

    在iOS开发中,实现UICollectionViewCell的倾斜效果是一种常见的视觉设计手法,可以为用户界面增添动态感和层次感。本文将详细讲解如何通过自定义UICollectionViewLayout来实现“iOS-Cell倾斜的效果-26...

Global site tag (gtag.js) - Google Analytics