文章目录
动画都是通过设置起始状态,结束状态,经过时间三个步骤实现的
Spring动画
一般usingSpringWithDamping设置为0.3或0.4
UIView.animate(
withDuration: 0.3,
delay: 0,
usingSpringWithDamping: 0.4,//弹性阻尼 0-1
initialSpringVelocity: 10,//初始弹簧速度
options: [],
animations: {
self.menuBarAnimate()
},
completion: nil
)
通过改变约束形成动画
改变约束常量constant
动画的函数withDuration设置时间
UIView.animate(withDuration: 0.3) {
self.menuBarAnimate()
}
func menuBarAnimate() {
menuHeight.constant = menuIsOpen ? 200 : 100
btnTrailing.constant = menuIsOpen ? 20 : 8
let angle = menuIsOpen ? CGFloat.pi/4 : 0 //2.按钮的旋转动画
buttonMenu.transform = CGAffineTransform(rotationAngle: angle)
view.layoutIfNeeded()//1.让根视图立刻重新布局
}
image的初始化,设置动画和销毁
func showItem(_ index: Int) {
let imageView = UIImageView(image: UIImage(named: "summericons_100px_0\(index).png"))
imageView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.5)
imageView.layer.cornerRadius = 5.0//设置圆角属性需要加layer
//1.用代码写的控件,默认情况下xcode会帮我们推断出约束,我们要自定义约束,所以定为false
imageView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(imageView)//在根视图上加子视图
//1.设定初始约束
let conWidth = imageView