博客
关于我
KxMenu下拉菜单
阅读量:802 次
发布时间:2023-01-29

本文共 4512 字,大约阅读时间需要 15 分钟。

###.iOS 7 下创建动态菜单](#cnblogs_post_body)

在 .iOS 7 下,创建动态菜单是一个常见的任务。以下代码实现了动态菜单的创建逻辑,适用于 .iOS 7 及以上版本。

+ (void)createMenu:(id)sender target:(UIViewController *)t{    NSArray *menuItems =     @[        [KxMenuItem menuItem:@"发送给朋友" image:[UIImage imageNamed:@"menu_weixin"] target:t action:@selector(shareToFriend)],        [KxMenuItem menuItem:@"分享到朋友圈" image:[UIImage imageNamed:@"menu_weixin_circle"] target:t action:@selector(shareToCircle)],        [KxMenuItem menuItem:@"随手摇一摇" image:[UIImage imageNamed:@"menu_shake"] target:t action:@selector(shakeAndShake)],        [KxMenuItem menuItem:@"检查更新" image:[UIImage imageNamed:@"menu_checkupdate"] target:t action:@selector(checkUpdate)],        [KxMenuItem menuItem:@"意见反馈" image:[UIImage imageNamed:@"menu_feedback"] target: t action:@selector(initFeedBack)],        [KxMenuItem menuItem:@"关于闪酷" image:[UIImage imageNamed:@"menu_about"] target:t action:@selector(aboutShanku)],    ];        if (IS_IOS7)    {        menuItems =         @[            [KxMenuItem menuItem:@"发送给朋友" image:[UIImage imageNamed:@"menu_weixin"] target:t action:@selector(shareToFriend)],            [KxMenuItem menuItem:@"分享到朋友圈" image:[UIImage imageNamed:@"menu_weixin_circle"] target:t action:@selector(shareToCircle)],            [KxMenuItem menuItem:@"随手摇一摇" image:[UIImage imageNamed:@"menu_shake"] target:t action:@selector(shakeAndShake)],            [KxMenuItem menuItem:@"随手扫一扫" image:[UIImage imageNamed:@"menu_qrcode"] target:t action:@selector(scanAndScan)],            [KxMenuItem menuItem:@"检查更新" image:[UIImage imageNamed:@"menu_checkupdate"] target:t action:@selector(checkUpdate)],            [KxMenuItem menuItem:@"意见反馈" image:[UIImage imageNamed:@"menu_feedback"] target: t action:@selector(initFeedBack)],            [KxMenuItem menuItem:@"关于闪酷" image:[UIImage imageNamed:@"menu_about"] target:t action:@selector(aboutShanku)],        ];    }        UIView *targetView = (UIView *)[sender performSelector:@selector(view)];    CGRect _rect = targetView.frame;    _rect.origin.y = _rect.origin.y + 30;    CGRect rect = _rect;        [KxMenu showMenuInView: t.navigationController.view fromRect: rect menuItems:menuItems];}

[代码块结束]


shakeToShake 通知处理

当应用程序接收到 shakeToShake 通知时,会触发以下逻辑:

+ (void) shakeToShake: (NSNotification *) notification{    NSDictionary *info = [notification userInfo];    SKShakeViewController *shakeView = [[SKShakeViewController alloc] init];        [[info objectForKey:@"controller"] pushViewController:shakeView animated:YES];}

[代码块结束]


scanAndScan 函数

+ (void) scanAndScan: (NSNotification *) notification{    [self setupCamera: notification];}

[代码块结束]


setupCamera 函数

+ (void) setupCamera: (NSNotification *) notification{    NSDictionary *info = [notification userInfo];        if (IS_IOS7)    {        SKScanViewController *scan = [[SKScanViewController alloc] init];        [[info objectForKey:@"controller"] presentViewController:scan animated:YES completion:^{ }]; // void块            }    else    {        // 为非.iOS 7 版本留空或根据需求实现其他逻辑    }}

[代码块结束]


分享到朋友圈

+ (void) shareToFriendCircle{    SKAppDelegate *AppDelegate = (SKAppDelegate *)[[UIApplication sharedApplication] delegate];    [AppDelegate changeScene:WXSceneTimeline];    [AppDelegate sendLinkContent];        [MobClick event:@"shareToCircle"];}

[代码块结束]


分享到朋友

+ (void) shareToFriend{    SKAppDelegate *AppDelegate = (SKAppDelegate *)[[UIApplication sharedApplication] delegate];    [AppDelegate changeScene:WXSceneSession];    [AppDelegate sendLinkContent];        [MobClick event:@"shareToFriend"];}

[代码块结束]


关于页面

+ (void) aboutShanku: (NSNotification *) notification{    NSDictionary *info = [notification userInfo];    SKAboutViewController *about = [[SKAboutViewController alloc] init];    [[info objectForKey:@"controller"] pushViewController:about animated:YES];}

[代码块结束]


检查更新

+ (void) checkUpdate{    [MobClick checkUpdateWithDelegate:self selector:@selector(isUpdate:)];}+ (void)isUpdate:(NSDictionary *)appInfo{    if ([[appInfo objectForKey:@"update"] isEqualToString:@"NO"])    {        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"已经是最新版本" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];        [alertView show];    }}

[代码块结束]


获取版本号

+ (NSString *) getBundleVersion{    NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];    return version;}

[代码块结束]


以上代码为您提供了一个完整的菜单创建和功能扩展逻辑,适用于 .iOS 7 及以上版本。代码结构清晰,易于维护和扩展。


转载请注明:https://www.cnblogs.com/songxing10000/p/4823651.html

你可能感兴趣的文章
Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
查看>>
Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
查看>>
Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
查看>>
Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
查看>>
Openlayers高级交互(8/20):选取feature,平移feature
查看>>
Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
查看>>
Openlayers:DMS-DD坐标形式互相转换
查看>>
openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
查看>>
OpenLDAP(2.4.3x)服务器搭建及配置说明
查看>>
OpenLDAP编译安装及配置
查看>>
Openmax IL (二)Android多媒体编解码Component
查看>>
OpenMCU(一):STM32F407 FreeRTOS移植
查看>>
OpenMCU(三):STM32F103 FreeRTOS移植
查看>>
OpenMCU(三):STM32F103 FreeRTOS移植
查看>>
OpenMCU(二):GD32E23xx FreeRTOS移植
查看>>
OpenMCU(五):STM32F103时钟树初始化分析
查看>>
OpenMCU(四):STM32F103启动汇编代码分析
查看>>
OpenMetadata 命令执行漏洞复现(CVE-2024-28255)
查看>>
OpenMMLab | AI玩家已上线!和InternLM解锁“谁是卧底”新玩法
查看>>
OpenMMLab | S4模型详解:应对长序列建模的有效方法
查看>>