关于动画锚点的设置

来源:互联网 发布:河图二手专辑淘宝店 编辑:程序博客网 时间:2024/06/05 14:50

在ios开发中,因为产品的需求,常常会用到动画,但是对于一个刚刚接触动画的菜鸟来说,想要制作出理想的动画效果肯定不是一件容易的事,今天我就拿出令很多人都比较头疼的问题来说一下,锚点的设置。

这边先来科普一下,什么是锚点,在一个view.layer中会存在一个AnchorPoint,这个就是锚点,同样的在view.layer中还存在一个点那就是Position,举个例子来类比一下。比如说现在在墙上挂着一幅画。而固定画的这个钉子就可以视为一个点,相对于这幅画来说,这个点就是锚点,相对于整个墙面来说,这个点就是position。如果还不能理解就看下图:


这样一来是不是清楚多了。下面详细来说一下锚点:

(图是盗来的,不要在意这些细节)

默认的,系统给一个view设置的初始锚点为(0.5,0.5),这是什么意思呢?(0.5,0.5)是指锚点的坐标在当前view的正中心,左下角就是(0,0),右下角就是(1,0),左上角就是(0,1),右上角就是(1,1),当然这些都是相对左手坐标系来判定的。

到此,我们对锚点已经有了一个初步的认识,接下来,就是动画的换,先来看一段代码:

self.view.transform = CGAffineTransformMakeRotation(M_PI);

这段代码的意思是把当前的view按顺时针旋转180°,由于锚点默认的是(0.5,0.5)所以这个是以这个view的center在旋转的。如果您的要求就是围绕中心点转得话,那么下面的您可能就不需要那么深入的理解了。

肯定有人会说,现在我不想按照这个中心点旋转,我需要按照右上角的点来旋转,按照一般思路,把锚点改成(1,1)就ok!但是如果你这样做的话,就会出现让你生不如死的效果,view的右上角跳到view的中心点上,所要做的view对象并不会按照你想像中的去变化,这是为什么呢?因为锚点的绝对坐标是不会改变的,虽然改变了锚点坐标,但是它始终都是在原来view的center上,所以就会出现当前状况。

讲到这里,接下来的操作就比较容易了,加一行代码就ok,在设置锚点的同时,把view的center的坐标改变一下,改变这个center的目的就是把坐标改边后的view拉回到原来的位置。这样就可以达到想要的效果了。。。

同样的,在3d变换中也是如此。。。

到此,锚点的设置就告一段落。。。



0 0
原创粉丝点击