本文讲述的是利用CATransfrom实现九宫格的出现动画
首先,定义相关变量,对象
//格子行数和列数
var dimension:Int = 4
//格子间隔
var padding:CGFloat = 20
//格子大小
var width:CGFloat = (UIScreen.main.bounds.size.width - 100)/4
//保存格子
var myViews = Array<UIView>()
设置格子的相关坐标
var x:CGFloat = 20
var y:CGFloat = 50
for _ in 0..<dimension{
for _ in 0..<dimension{
let myView = UIView(frame:CGRect(x: x,y: y,width: width,height: width))
myView.backgroundColor = UIColor.darkGray
self.view.addSubview(myView)
myViews.append(myView)
x += padding + width
}
x = 20
y += padding + width
}
添加Transfrom动画
for myView in myViews{
//将视图缩小为原来的1/10
myView.layer.setAffineTransform(CGAffineTransform(scaleX: 0.1, y: 0.1))
//myView.alpha = 0
UIView.animate(withDuration: 1, delay: 0.01, options: UIViewAnimationOptions(), animations: {() -> Void in
//将视图旋转90度
myView.layer.setAffineTransform(CGAffineTransform(rotationAngle: 90))
}, completion: {(finish:Bool) -> Void in
UIView.animate(withDuration: 1, animations: {() -> Void in
//动画结束后,数据块复原
myView.layer.setAffineTransform(CGAffineTransform.identity)
//myView.alpha = 1.0
})
})
}
最后运行结果如下