Swift 菜单动画效果 SDiffuseMenu

Posted swift语言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 菜单动画效果 SDiffuseMenu相关的知识,希望对你有一定的参考价值。

SDiffuseMenu: Swift版AwesomeMenu, 点击菜单后选项按钮四散的动画效果。OC版本点击这里。

一、使用方法如下: 

添加协议(动画状态回调) -> 设置选项数组 -> 设置菜单按钮 -> 动画属性配置 -> .addSubview(menu)


1、添加协议 

1 class ViewController: UIViewController, SDiffuseMenuDelegate {
2     var menu: SDiffuseMenu!
3 }

2、设置菜单的选项按钮数据 


01 guard letstoryMenuItemImage            =  UIImage(named:"menuitem-normal.png")         else{ fatalError("图片加载失败") }
02 guard letstoryMenuItemImagePressed     =  UIImage(named:"menuitem-highlighted.png")    else{ fatalError("图片加载失败") }
03 guard letstarImage                     =  UIImage(named:"star.png")                    else{ fatalError("图片加载失败") }
04 guard letstarItemNormalImage           =  UIImage(named:"addbutton-normal.png")        else{ fatalError("图片加载失败") }
05 guard letstarItemLightedImage          =  UIImage(named:"addbutton-highlighted.png")   else{ fatalError("图片加载失败") }
06 guard letstarItemContentImage          =  UIImage(named:"plus-normal.png")             else{ fatalError("图片加载失败") }
07 guard letstarItemContentLightedImage   =  UIImage(named:"plus-highlighted.png")        else{ fatalError("图片加载失败") }
08
09 var menus = [SDiffuseMenuItem]()
10 for in 0 ..< 9 {
11     let starMenuItem =  SDiffuseMenuItem(image: storyMenuItemImage,
12                                          highlightedImage: storyMenuItemImagePressed, contentImage: starImage,
13                                          highlightedContentImage: nil)
14     menus.append(starMenuItem)
15 }

3、设置菜单按钮 

1 let startItem = SDiffuseMenuItem(image: starItemNormalImage,
2                                  highlightedImage: starItemLightedImage,
3                                  contentImage: starItemContentImage,
4                                  highlightedContentImage: starItemContentLightedImage)

4、添加SDiffuseMenu 

1 let menuRect = CGRect.init(x: self.menuView.bounds.size.width/2,
2                            y: self.menuView.bounds.size.width/2,
3                            width: self.menuView.bounds.size.width,
4                            height: self.menuView.bounds.size.width)
5 menu =  SDiffuseMenu(frame:menuRect, startItem:startItem,
6                          menusArray:menus as NSArray)
7 menu.center = self.menuView.center
8 menu.delegate = self
9 self.menuView.addSubview(menu)

5、动画配置 

动画中半径的变化:0--> 最大farRadius--> 最小nearRadius--> 结束endRadius



01 // 动画时长
02 menu.animationDuration  = CFTimeInterval(animationDrationValue.text!)
03 // 最小半径
04 menu.nearRadius         = CGFloat((nearRadiusValue.text! asNSString).floatValue)
05 // 结束半径
06 menu.endRadius          = CGFloat((endRadiusValue.text! asNSString).floatValue)
07 // 最大半径
08 menu.farRadius          = CGFloat((farRadiusValue.text! asNSString).floatValue)
09 // 单个动画间隔时间
10 menu.timeOffset         = CFTimeInterval(timeOffSetValue.text!)!
11 // 整体角度
12 menu.menuWholeAngle     = CGFloat((menuWholeAngleValue.text! asNSString).floatValue)
13 // 整体偏移角度
14 menu.rotateAngle        = CGFloat(0.0)
15 // 展开时自旋角度
16 menu.expandRotation     = CGFloat(M_PI)
17 // 结束时自旋角度
18 menu.closeRotation      = CGFloat(M_PI * 2)
19 // 是否旋转菜单按钮
20 menu.rotateAddButton    = rotateAddButton.isOn
21 // 菜单按钮旋转角度
22 menu.rotateAddButtonAngle = CGFloat((rotateAddButtonAngleValue.text! asNSString).floatValue)
23 // ..

6、动画过程监听 

01 funcSDiffuseMenuDidSelectMenuItem(_ menu: SDiffuseMenu, didSelectIndex index: Int) {
02     print("选中按钮at index:\(index) is: \(menu.menuItemAtIndex(index)) ")
03 }
04
05 func SDiffuseMenuDidClose(_ menu: SDiffuseMenu) {
06     print("菜单关闭动画结束")
07 }
08
09 func SDiffuseMenuDidOpen(_ menu: SDiffuseMenu) {
10     print("菜单展开动画结束")
11 }
12
13 func SDiffuseMenuWillOpen(_ menu: SDiffuseMenu) {
14     print("菜单将要展开")
15 }
16
17 func SDiffuseMenuWillClose(_ menu: SDiffuseMenu) {
18     print("菜单将要关闭")
19 }



开源代码主页     ❤


文章来自:51swift.com



以上是关于Swift 菜单动画效果 SDiffuseMenu的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 2 在菜单按钮点击动画视图

iOS播放器Flutter高仿书旗小说卡片动画二维码扫码菜单弹窗效果等源码

swift--动画效果

Swift - 删除动画效果

请教个安卓动画效果,就是点击一级菜单动态显示二级菜单的问题?请教大神

Swift 动画 - 触地得分效果不佳