如何移动应用了CGAFFINETRANSFORM效果的UIVIEW

来源:互联网 发布:json格式验证工具 编辑:程序博客网 时间:2024/05/01 12:34

转载自:http://www.travelchu.com/2014/08/13/%E5%A6%82%E4%BD%95%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8%E4%BA%86cgaffinetransform%E6%95%88%E6%9E%9C%E7%9A%84uiview/


在UIView 的旋转与缩放以及同时应用两种效果(一)与 UIView 的旋转与缩放以及同时应用两种效果(二)中我们探讨了如何对UIView应用旋转以及缩放效果,下面我们来探讨一下如何对应用了CGAffineTransform效果的UIView进行移动操作。(这里假设view是UIView的一个实例,中心点原始坐标为(50,50))

通常我们怎么改变一个view的位置呢?你肯定想得到,那就是设置一个新的中心点给view。代码是如此简单:

 

可是等等,我的view刚刚应用了旋转和缩放效果,现在我只是移动了一点点的距离怎么看起来view在乱跑,完全不是我要的(100,50);

如前面两篇博文所讲,在应用旋转与缩放效果时,已经对原始的坐标系有了影响。我们知道CGAffineTransform是一个矩阵变换,所以我们只要根据矩阵变换的知识,计算出我们需要的中心点不就行了?可是。。。数学早忘光了,该怎么办?

在Apple的文档中我注意到这样一个方法:CGAffineTransformCGAffineTransformTranslate(CGAffineTransform t,  CGFloat tx,CGFloat ty)

问题迎刃而解。假设在view的touch begin方法里去的了拖动的其实坐标,那么在touch move方法里你可用如下代码实现view的拖动操作(这里的self指的是view本身):


0 0
原创粉丝点击