swift 关于layer层的简单动效
2017-07-05 本文已影响135人
盗跖矢儿
笔者性懒,腹中无墨
APP开发无论复杂与否, 都会遇到一些交互的动效问题.本文讲一些展开,收起的效果,比如点击某个按钮,则下方出现选择框,非常简单的效果.
点击之前
1.png
点击之后
2.png
选择之后
3.png
展开的可以是一个view,view上铺什么控件根据需求.
最开始就可以将这个view放在父视图上,frame给完全展示时的frame.
fileprivate lazy var complexityView: UIView = {
let view = UIView(frame: CGRect(x: 0, y: 100, width: 200, height: 50))
return view
}()
然后做一些变换让它的高度几乎为零.
let beginScale = CATransform3DMakeScale(1, 0.0001, 1)
let beginTranslation = CATransform3DMakeTranslation(1, -50, 1)
let beginTransform = CATransform3DConcat(beginScale, beginTranslation)
complexityView.layer.transform = beginTransform
当然,这个view一般是自定义的view,不必是UIView
当点击按钮,此时应展开view的frame了,给一个简单的动画延时
UIView.animate(withDuration: 0.3, animations: {
complexityView.layer.transform = CATransform3DIdentity
})
基本上可以了,一般还需要对父视图的高度做处理,所以展开,收起的时候需要对父视图的
frame.size.height = ??
做相应的更改,之后通过闭包的形式让controller或者上一层及的view做出反应,若是简单的tableView,别忘了
tableView.beginUpdates()
高度变化逻辑
tableView.endUpdates()
下班.