今天在网到有人实现了一个旋转菜单,我用CAKeyFrameAnimation(position)和CABasicAnimation(transform.scale)也做了一个,和大家分享下,
菜单支持奇数和偶数个,点击会旋转并缩放,图如下:
实现代码:都在一个swift即可。
1.先自定义一个UIButton类,添加两个属性
import UIKit
class CustomButton: UIButton {
var currentAngle: CGFloat = 0.0
var currentIndex: Int = 0
}
2.添加菜单类,声明几个数组分别保存按钮,按钮最开始的坐标,按钮最开始的缩放比例
class AnimationMenu: UIView {
var menuArray: [CustomButton] = Array()
var menuSize: CGSize = CGSizeZero
var radius: CGFloat = 0.0
let duration: NSTimeInterval = 0.5
var scaleArray: [CGFloat] = Array()
var menuCenterArray: [CGPoint] = Array()
}
3.初始化函数
init(frame: CGRect, imageArray: [UIImage?], size: CGSize, radius: CGFloat) {
super.init(frame: frame)
menuSize = size
self.radius = radius
createMenuButtons(imageArray)
addMenuViews()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)