前言
在iOS中动画效果可以给app加分不少,其实实现动画的过程并不复杂,此博文将介绍常用的动画。
目录:
- CALayer
- Core Animation
- 基础动画 CABasicAnimation
- 关键帧动画 CAKeyframeAnimation
- 动画组 CAAnimationGroup
- 转场动画 CATransition
- 弹性动画 CASpringAnimation
- UIView动画封装
CALayer
iOS中CALayer的设计主要是了为了内容展示和动画操作,CALayer本身并不包含在UIKit中,它不能响应事件。由于CALayer在设计之初就考虑它的动画操作功能,CALayer很多属性在修改时都能形成动画效果,这种属性称为“隐式动画属性”。但是对于UIView的根图层而言属性的修改并不形成动画效果,因为很多情况下根图层更多的充当容器的做用,如果它的属性变动形成动画效果会直接影响子图层。另外,UIView的根图层创建工作完全由iOS负责完成,无法重新创建,但是可以往根图层中添加子图层或移除子图层。
常用的CALayer属性有:
属性 | 说明 | 是否支持隐式动画 |
---|---|---|
anchorPoint | 和中心点重合的一个点,默认为(0.5,0.5) | 是 |
backgroundColor | 背景图片 | 是 |
borderColor | 边框颜色 | 是 |
borderWidth | 边框宽度 | 是 |
bounds | 图层大小 | 是 |
cornerRadius | 圆角半径 | 是 |
hidden | 是否隐藏 | 是 |
mask | 图层蒙版 | 是 |
maskToBounds | 子图层是否剪切图层边界 | 是 |
opacity | 透明度 | 是 |
position | 中心点位置 | 是 |
shadowColor | 阴影颜色 | 是 |
shadowOffset | 阴影偏移量 | 是 |
shadowOpacity | 阴影透明度 | 是 |
shadowPath | 阴影形状 | 是 |
shadowRadius | 阴影模糊半径 | 是 |
transform | 图层形变 | 是 |
frame | 位置 | 否 |
隐式动画属性的变化默认使用CABasicAnimation动画实现,如修改属性不需要动画,则通过事务关闭隐式动画:
CATransaction.begin()
CATransaction.setDisableActions(true)
rightBtn.layer.position = CGPoint.zero
CATransaction.commit()