转载自 :https://elliotsomething.github.io/2016/12/25/iOS-%E4%B9%8B-%E5%9D%91%E7%B3%BB%E5%88%97/#%E5%9D%91-2
坑:
UIView
动画的坑
很多系统的API中动画效果都会带有animation
的参数,比如: - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
。这些API
的animation
自带的动画都是transition
动画,transition
动画会另开一个动画线程,然后在主线程执行,这个时候如果你去进行UI操作,就会打断动画的执行,比如tableview
的reloadData
(可能会让动画卡顿)
另一种动画就是UIView
的属性动画block
,这种动画在主线程执行,不会被其他UI操作打断动画的执行
遇到的坑就是,下拉刷新的时候,使用的是系统自带的API
:- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
如果数据比较复杂且tableview
的reload
比较频繁,就会导致animation
动画很卡顿;
解决办法就是换成属性动画或者block
动画;
动画的继承结构
CAAnimation{
CAPropertyAnimation{
CABasicAnimation{
CASpringAnimation
}
CAKeyframeAnimation
}
CATransition
CAAnimationGroup
}