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! |
2、设置菜单的选项按钮数据
01 |
guard let storyMenuItemImage = UIImage(named: "menuitem-normal.png" ) else { fatalError( "图片加载失败" ) } |
02 |
guard let storyMenuItemImagePressed = UIImage(named: "menuitem-highlighted.png" ) else { fatalError( "图片加载失败" ) } |
03 |
guard let starImage = UIImage(named: "star.png" ) else { fatalError( "图片加载失败" ) } |
04 |
guard let starItemNormalImage = UIImage(named: "addbutton-normal.png" ) else { fatalError( "图片加载失败" ) } |
05 |
guard let starItemLightedImage = UIImage(named: "addbutton-highlighted.png" ) else { fatalError( "图片加载失败" ) } |
06 |
guard let starItemContentImage = UIImage(named: "plus-normal.png" ) else { fatalError( "图片加载失败" ) } |
07 |
guard let starItemContentLightedImage = UIImage(named: "plus-highlighted.png" ) else { fatalError( "图片加载失败" ) } |
09 |
var menus = [SDiffuseMenuItem]() |
11 |
let starMenuItem = SDiffuseMenuItem(image: storyMenuItemImage, |
12 |
highlightedImage: storyMenuItemImagePressed, contentImage: starImage, |
13 |
highlightedContentImage: nil) |
14 |
menus.append(starMenuItem) |
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 |
9 |
self .menuView.addSubview(menu) |
5、动画配置
动画中半径的变化:0--> 最大farRadius--> 最小nearRadius--> 结束endRadius
02 |
menu.animationDuration = CFTimeInterval(animationDrationValue.text!) |
04 |
menu.nearRadius = CGFloat((nearRadiusValue.text! as NSString).floatValue) |
06 |
menu.endRadius = CGFloat((endRadiusValue.text! as NSString).floatValue) |
08 |
menu.farRadius = CGFloat((farRadiusValue.text! as NSString).floatValue) |
10 |
menu.timeOffset = CFTimeInterval(timeOffSetValue.text!)! |
12 |
menu.menuWholeAngle = CGFloat((menuWholeAngleValue.text! as NSString).floatValue) |
14 |
menu.rotateAngle = CGFloat( 0.0 ) |
16 |
menu.expandRotation = CGFloat(M_PI) |
18 |
menu.closeRotation = CGFloat(M_PI * 2 ) |
20 |
menu.rotateAddButton = rotateAddButton.isOn |
22 |
menu.rotateAddButtonAngle = CGFloat((rotateAddButtonAngleValue.text! as NSString).floatValue) |
6、动画过程监听
01 |
func SDiffuseMenuDidSelectMenuItem(_ menu: SDiffuseMenu, didSelectIndex index: Int) { |
02 |
print( "选中按钮at index:\(index) is: \(menu.menuItemAtIndex(index)) " ) |
05 |
func SDiffuseMenuDidClose(_ menu: SDiffuseMenu) { |
09 |
func SDiffuseMenuDidOpen(_ menu: SDiffuseMenu) { |
13 |
func SDiffuseMenuWillOpen(_ menu: SDiffuseMenu) { |
17 |
func SDiffuseMenuWillClose(_ menu: SDiffuseMenu) { |
开源代码主页 ❤
文章来自:51swift.com
以上是关于Swift 菜单动画效果 SDiffuseMenu的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swift 2 在菜单按钮点击动画视图
iOS播放器Flutter高仿书旗小说卡片动画二维码扫码菜单弹窗效果等源码
swift--动画效果
Swift - 删除动画效果
请教个安卓动画效果,就是点击一级菜单动态显示二级菜单的问题?请教大神
Swift 动画 - 触地得分效果不佳