AutoLayout下Constraint动画
2015-03-02 21:24
197 查看
Constraint的动画如果按照一般的写法,是无效的。比如:
至于是什么原因,暂时还不了解,以后会持续关注这个问题。
网络上为了解决这个约束的动画的问题,大部分用的是View的一个方法—layoutIfNeeded。大概的作用是,持续刷新,然后就有动画了,当然这是我自己的猜测。我也不是很熟悉Layout方面的内容,并且我做了这方面的尝试之后,没有成功。
在一次偶然的日常查阅中,突然有位网友提到了bounds这个属性。于是有了下面这段代码:
其中_loginView是需要完成动画的View,_animateConstraint是该View的约束,是距上方最近的控件的距离。
这段代码的思路是,先用bounds完成动画(为什么不用frame?自动布局里面frame是无效的?我没做过验证,不确定),但动画完成后该View处于自己有效范围外,所以动画完成之后,我将该View的bounds恢复,然后更改他的Constraint,保持在动画结束的位置,这样就比较漂亮的完成动画了。
当然,有空会试试LayoutIfNeeded来完成动画。
[UIView animateWithDuration:1.0f animations:^ { _animateConstraint.constant = -180.0f; }]
至于是什么原因,暂时还不了解,以后会持续关注这个问题。
网络上为了解决这个约束的动画的问题,大部分用的是View的一个方法—layoutIfNeeded。大概的作用是,持续刷新,然后就有动画了,当然这是我自己的猜测。我也不是很熟悉Layout方面的内容,并且我做了这方面的尝试之后,没有成功。
在一次偶然的日常查阅中,突然有位网友提到了bounds这个属性。于是有了下面这段代码:
CGRect originalBounds = _loginView.bounds; CGRect newBounds = originalBounds; newBounds.origin.y += 180.0f; [UIView animateWithDuration:0.3f animations:^ { _loginView.bounds = newBounds; } completion:^(BOOL finished) { _loginView.bounds = originalBounds; _animateConstraint.constant = -180.0f; }];
其中_loginView是需要完成动画的View,_animateConstraint是该View的约束,是距上方最近的控件的距离。
这段代码的思路是,先用bounds完成动画(为什么不用frame?自动布局里面frame是无效的?我没做过验证,不确定),但动画完成后该View处于自己有效范围外,所以动画完成之后,我将该View的bounds恢复,然后更改他的Constraint,保持在动画结束的位置,这样就比较漂亮的完成动画了。
当然,有空会试试LayoutIfNeeded来完成动画。
相关文章推荐
- iOS 通过constraint 进行autolayout的动画
- iOS UI设计: 在Autolayout的布局上用constraint实现动画
- iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry)
- ios NSLayoutConstraint constant 动画
- Android利用ConstraintLayout实现漂亮的动画详解
- iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry)
- IOS5 Autolayout 引发的错误 Could not instantiate class named NSLayoutConstraint
- iOS开发笔记-Autolayout自动布局与UIView动画
- iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry)
- 解决IOS7中LayoutConstraint动画无效果的问题
- IOS学习 autolayout 动画 与文件夹拖拽截图
- AutoLayout(III):浅析动画
- AutoLayout 浅析动画
- [iOS AutoLayout动画 坑] AutoLayout动画平移坑总结 => Swift/OC
- 【iOS开发-113】在storyboard上用AutoLayout,纯代码实现AutoLayout布局方法以及简单动画
- iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry)
- iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry)
- AutoLayout动画
- 如何对使用了autolayout的UIView添加动画
- 使用AutoLayout的时怎实现动画