关于动画锚点的设置
在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变换中也是如此。。。
到此,锚点的设置就告一段落。。。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 醒不来的梦
- 关于自我为中心的一点感想
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 关于Ruby的杂想
- 关于读书的思考
- 关于this的一些问题(1)
- 《声之形》
- 关于如何沟通的1/2/3