筆者性懶,腹中無墨
APP開發(fā)無論復(fù)雜與否, 都會遇到一些交互的動效問題.本文講一些展開,收起的效果,比如點(diǎn)擊某個按鈕,則下方出現(xiàn)選擇框,非常簡單的效果.
點(diǎn)擊之前
1.png
點(diǎn)擊之后
2.png
選擇之后
3.png
展開的可以是一個view,view上鋪什么控件根據(jù)需求.
最開始就可以將這個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
當(dāng)然,這個view一般是自定義的view,不必是UIView
當(dāng)點(diǎn)擊按鈕,此時應(yīng)展開view的frame了,給一個簡單的動畫延時
UIView.animate(withDuration: 0.3, animations: {
complexityView.layer.transform = CATransform3DIdentity
})
基本上可以了,一般還需要對父視圖的高度做處理,所以展開,收起的時候需要對父視圖的
frame.size.height = ??
做相應(yīng)的更改,之后通過閉包的形式讓controller或者上一層及的view做出反應(yīng),若是簡單的tableView,別忘了
tableView.beginUpdates()
高度變化邏輯
tableView.endUpdates()
下班.