hi,all:
在经过了一番犹豫之后,我决定将我自己做的这个小APP的源码公布给大家:
其出发点是和大家一起学习iOS开发,仅供学习参考之用。之前代码是托管与gitlab
上的,今天我将其pull到github上来了,大家可以自行下载:git clone git@github.com:lihux/twentyThousandTomatoes.git没有安装git或者不会用的童鞋,
请猛戳github地址:https://github.com/lihux/twentyThousandTomatoes,进去之后选
择download zip下载即可。
当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了
传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。
甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我
(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件
(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary
布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以
认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动
这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。
现在问题就来了,在以前我们经常通过对一个view的frame的修改产生view移动
的动画效果,那么在使用了autolayout的view世界中我们该如何实现相同的效果呢?
答案是,我们“将计就计”,通过改变这个view上的某个约束constraint然后在uiview的
animation block中触发layout来实现。
一、预期效果
下面我们以一个简单的例子来进行详细的说明: