- 浏览: 362807 次
文章分类
最新评论
-
lord_is_layuping:
...
PYQT4 + Python2.6 + eric4-4.2.2a的安装全过程 -
597272095:
3Q
Oracle客户端PL/SQL 中文乱码解决 -
lpluck08:
如果不是在git本地版本目录中执行的话,会有问题。到本地版本目 ...
git 中文文件名 乱码 mac -
aiove:
-API
分享到: 阿撒旦发撒旦发速度飞洒发
iOS开发开源项目推荐 -
Wallian_hua:
感谢,楼主的详细分析,对我的启发很大。。我也正在研究这方面的技 ...
[ZT]简单OCR实现原理
CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI_2); 顺便记录一些常量,以后用的着! #define M_E 2.71828182845904523536028747135266250 e from:http://donbe.blog.163.com/blog/static/138048021201061054243442/
[xxx setTransform:rotation];
呵呵就这么简单的两行代码就可以实现了!
#define M_LOG2E 1.44269504088896340735992468100189214 log 2e
#define M_LOG10E 0.434294481903251827651128918916605082 log 10e
#define M_LN2 0.693147180559945309417232121458176568 log e2
#define M_LN10 2.30258509299404568401799145468436421 log e10
#define M_PI 3.14159265358979323846264338327950288 pi
#define M_PI_2 1.57079632679489661923132169163975144 pi/2
#define M_PI_4 0.785398163397448309615660845819875721 pi/4
#define M_1_PI 0.318309886183790671537767526745028724 1/pi
#define M_2_PI 0.636619772367581343075535053490057448 2/pi
#define M_2_SQRTPI 1.12837916709551257389615890312154517 2/sqrt(pi)
#define M_SQRT2 1.41421356237309504880168872420969808 sqrt(2)
#define M_SQRT1_2 0.707106781186547524400844362104849039 1/sqrt(2)
CGAffineTransformMakeTranslation(width, 0.0);是改变位置的,
CGAffineTransformRotate(transform, M_PI);是旋转的。
CGAffineTransformMakeRotation(-M_PI);也是旋转的
transform = CGAffineTransformScale(transform, -1.0, 1.0);是缩放的。
view.transform = CGAffineTransformIdentity;线性代数里面讲的矩阵变换,这个是恒等变换
当你改变过一个view.transform属性或者view.layer.transform的时候需要恢复默认状态的话,记得先把他们重置可以使用view.transform = CGAffineTransformIdentity,或者view.layer.transform = CATransform3DIdentity,假设你一直不断的改变一个view.transform的属性,而每次改变之前没有重置的话,你会发现后来的改变和你想要的发生变化了,不是你真正想要的结果void CGContextDrawImage (
CGContextRef c,
CGRect rect,
CGImageRef image
);
移动函数
CGContextTranslateCTM (myContext, 100, 50);
旋转函数
include <math.h>
static inline double radians (double degrees) {return degrees * M_PI/180;}
CGContextRotateCTM (myContext, radians(–45.));
缩放
CGContextScaleCTM (myContext, .5, .75);
翻转, 两种转换合成后的效果,先把图片移动到右上角,然后旋转180度
CGContextTranslateCTM (myContext, w,h);
CGContextRotateCTM (myContext, radians(-180.));
组合几个动作
CGContextTranslateCTM (myContext, w/4, 0);
CGContextScaleCTM (myContext, .25, .5);
CGContextRotateCTM (myContext, radians ( 22.));
CGContextRotateCTM (myContext, radians ( 22.));
CGContextScaleCTM (myContext, .25, .5);
CGContextTranslateCTM (myContext, w/4, 0);
上面是通过直接修改当前的ctm实现3大效果,下面是通过创建Affine Transforms,然后连接ctm实现同样的3种效果
这样做的好处是可以重用这个Affine Transforms
应用Affine Transforms 到ctm的函数
void CGContextConcatCTM (
CGContextRef c,
CGAffineTransform transform
);
Creating Affine Transforms
移动效果
CGAffineTransform CGAffineTransformMakeTranslation (
CGFloat tx,
CGFloat ty
);
CGAffineTransform CGAffineTransformTranslate (
CGAffineTransform t,
CGFloat tx,
CGFloat ty
);
旋转效果
CGAffineTransform CGAffineTransformMakeRotation (
CGFloat angle
);
CGAffineTransform CGAffineTransformRotate (
CGAffineTransform t,
CGFloat angle
);
缩放效果
CGAffineTransform CGAffineTransformMakeScale (
CGFloat sx,
CGFloat sy
);
CGAffineTransform CGAffineTransformScale (
CGAffineTransform t,
CGFloat sx,
CGFloat sy
);
反转效果
CGAffineTransform CGAffineTransformInvert (
CGAffineTransform t
);
只对局部产生效果
CGRect CGRectApplyAffineTransform (
CGRect rect,
CGAffineTransform t
);
判断两个AffineTrans是否相等
bool CGAffineTransformEqualToTransform (
CGAffineTransform t1,
CGAffineTransform t2
);
获得Affine Transform
CGAffineTransform CGContextGetUserSpaceToDeviceSpaceTransform (
CGContextRef c
);
下面的函数只起到查看的效果,比如看一下这个用户空间的点,转换到设备空间去坐标是多少
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
);
CTM真正的数学行为
这个转换矩阵其实是一个 3x3的 举证
如下图
bool CGAffineTransformIsIdentity (
CGAffineTransform t
);
移动矩阵
缩放矩阵
发表评论
-
[zt]iPhone开发中关于UIView Animation实现效果
2012-08-30 23:04 1365http://mobile.51cto.com/ipho ... -
Appletv3 到手试用 ,并推荐美剧一部
2012-06-04 21:20 2062一直也不知道 appletv 是干什么的,和同学聊起来,似乎他 ... -
mac 批量转换图片格式。
2012-02-05 11:42 1882mkdir jpegs; sips -s fo ... -
IOS 自带动画效果
2011-12-01 14:45 4049在ios view与view间切换的动画效果这篇文章中简单 ... -
[ZT]UITableView下拉刷新页面的实现
2011-12-01 14:02 2633UITableView下拉刷新页面的实现 以前 ... -
iOS的动画效果类型及实现方法
2011-12-01 14:00 4214iOS的动画效果类型及实现方法 ... -
[zt]UIImage图片的缩小与放大
2011-12-01 13:53 1500UIImage可以加载图片,但是我们想要得到一张缩小或放大 ... -
UIView内存释放问题
2011-12-01 11:30 1314UIView内存释放,之前一直以为把alloc的UIVie ... -
[zt]UIScrollView,点击、滑动翻页事件的区分
2011-11-29 10:00 3399UIScrollView,点击、滑动 ... -
iphone中的UITouch
2011-08-31 00:56 2120手指在屏幕上能达到的精度和鼠标指针有很大的不同。当用户触击 ... -
[ZT]UIView的剖析!
2011-08-27 18:49 2639http://blog.csdn.net/mengtnt/ ... -
xcode crash 查找 EXC_BAD_ACCESS 问题根源的方法
2011-06-28 17:49 10209xcode4 4.x EXC_BAD_ACCESS ... -
How To Use the Three20 Photo Viewer
2011-06-23 02:13 1731How To Use the Three20 Photo ... -
iOS开发开源项目推荐
2011-06-10 21:02 23631 tbxml xml解析的类库,只支持解析,不支持写, ... -
在ios应用程序中按目录管理资源
2011-06-10 21:00 5192在ios应用程序中按目录管理资源 在ios的 ... -
UIScrollView分页的实现
2011-06-06 17:14 6109UIScrollView分页的实现 UIScro ... -
编写简单的翻页效果
2011-05-30 21:46 1901http://marshal.easymorse ... -
UIPopoverController
2011-05-21 21:43 18011、初始化UIPopoverController ... -
iphone debug
2011-05-21 01:50 1100在 .pch中加入 #ifndef __OPTI ... -
国际化Iphone的应用程序名称
2011-01-17 13:31 1633http://www.voland.com.cn/iphone ...
相关推荐
在iOS和macOS开发中,`CGAffineTransform`是苹果Core Graphics框架中的一个核心部分,用于处理二维几何变换,如平移、旋转、缩放和倾斜。这个知识点涉及到计算机图形学的基础,是移动应用开发中不可忽视的一个环节。...
4. **动画完成回调**:在动画块的末尾,可以设置一个`completion`回调函数,根据动画的状态(是否成功完成)更新视图的状态,例如,完全显示或隐藏抽屉。 5. **反向动画**:当抽屉需要关闭时,执行相反的平移动画,...
矩阵运算是计算机图形学和图像处理中非常重要的一部分,CGAffineTransformMake(a,b,c,d,tx,ty) 函数是iOS开发中用于创建一个仿射变换矩阵的函数。本文将详细介绍CGAffineTransformMake(a,b,c,d,tx,ty) 函数的原理、...
2. 提供了转换函数,方便在2D和3D变换之间进行切换,如`CGAffineTransform.toCATransform3D()`和`CATransform3D.toCGAffineTransform()`。 3. 可能包含一些实用工具,比如计算变换后的矩形尺寸或位置,或者从已知...
这个压缩包文件"ios-CGAffine基本操作.zip"显然包含了关于如何在UI控件上应用CGAffineTransform进行位移形态控制的相关示例或教程。"IOS-CGAffineTransformIdentity"可能是其中的一个文件,通常表示...
CGContextRef为绘制文字提供了如下函数。 CGAffineTransform CGContextGetTextMatrix(CGContextRef c):获取当前对文本执行变换的变换矩阵。 CGPoint CGContextGetTextPosition(CGContextRef c):获取该CGContextRef...
本文将深入探讨这一主题,介绍如何实现这一功能,并涉及相关的技术点。 首先,手动截图功能通常涉及到操作系统级别的API调用。在Windows系统中,可以使用`PrintWindow`函数来捕获窗口的图像;在macOS中,可以利用`...
有时我们可能需要将CATransform3D转换为CGAffineTransform,这可以使用CGAffineTransformTransform3DGetAffineTransform函数完成。仿射变换只涉及平面内的变换,如缩放、旋转和平移,而不涉及深度信息。 7. 检查...
`transform`属性允许我们对视图进行旋转、缩放、平移等操作,而`CGAffineTransformMakeRotation`函数可以让我们指定一个角度来旋转视图。 例如,如果我们想要一个转盘从当前位置开始匀加速旋转,然后在接近目标角度...
Operators for adding, scaling sizes, applying CGAffineTransform Shortcut properties for corner and center points Offsetting, insetting and extending methods with multiple ways of specifying ...
Transform类是基于CGAffineTransform结构体的,它允许开发者通过矩阵运算来改变视图的位置、大小和方向。下面将详细阐述Transform类的主要使用方法和应用场景。 1. CGAffineTransform结构体: CGAffineTransform是...
可以使用CGAffineTransform缩放函数,结合CAKeyframeAnimation来平滑地改变大小,同时保持图像质量。 为了实现这一效果,开发者可以编写以下Swift代码: ```swift let button = UIButton() // 设置初始大小 button...
在这个示例中,`handleLongPress`函数处理长按手势的开始和结束,`startShakeAnimation`函数则负责视图的抖动动画。`removeItem`函数是实际的删除逻辑,但具体实现会因应用场景而异。 总的来说,"iPhone长按抖动...
首先,我们需要引入相关的框架。在iOS开发中,主要使用UIKit框架来处理用户界面和图像操作。确保在你的项目中导入`UIKit`: ```swift import UIKit ``` 接下来,我们创建一个UIImageView来展示图片,并添加...
Swift动画还支持回调函数,例如完成回调或取消回调,以便在动画结束后执行其他操作。此外,通过设置isRemovedOnCompletion和shouldRasterize等属性,可以控制动画结束后的视图状态和性能优化。 总结来说,创建...
对于任意角度的旋转,我们可以通过计算旋转角度的弧度值,然后调用`CGAffineTransformMakeRotation`函数创建一个旋转变换。例如,如果我们想要逆时针旋转90度,代码可以这样写: ```swift let rotationAngle = ...
6. **变换(Transformations)**:Quartz 2D提供矩阵变换功能,如平移、旋转、缩放和倾斜,可以使用`CGAffineTransform`结构体和相关函数进行操作,改变图形的显示效果。 7. **图层(Layers)**:虽然不是Quartz 2D...
例如,可以创建两个CALayer,分别代表页面的前后两面,然后通过`CATransform3DMakeRotation`函数设置不同的旋转角度,同时调整阴影属性,以模拟立体翻页的效果。 此外,iBook的翻页功能还可能涉及到手势识别,比如...
本话题将详细讨论如何实现图片向左旋转的功能,以及相关的编程技术。标题“图片向左旋转”表明我们将聚焦于这个特定的操作,而描述则提示我们这是一个已实现的示例,可以轻松地修改为向右旋转。 在计算机视觉和图像...
这可能涉及到对CGAffineTransform的使用,以实现2D旋转效果。 7. 不要忘记在不再需要磁力计数据时,调用`stopMagnetometerUpdates`来停止更新,以节省资源。 此外,为了提高用户体验,开发者可能会考虑以下方面: -...