本文共 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 通知时,会触发以下逻辑:
+ (void) shakeToShake: (NSNotification *) notification{ NSDictionary *info = [notification userInfo]; SKShakeViewController *shakeView = [[SKShakeViewController alloc] init]; [[info objectForKey:@"controller"] pushViewController:shakeView animated:YES];}
[代码块结束]
+ (void) scanAndScan: (NSNotification *) notification{ [self setupCamera: notification];}
[代码块结束]
+ (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 及以上版本。代码结构清晰,易于维护和扩展。