快速集成3D Touch,针对不同的用户,不同包显示不同的3D Touch
2017-08-03 11:43
399 查看
第一步:在application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions方法里面设置根控制器,这是都知道的
第二步:在自动获取跟控制器的工具类(BWJGetRootController)做是否显示3DTouch的判断(3D是ios9.0以上版本才可以使用)
第三步:创建appdelegate分类(AppDelegate+BWJ3Dtouch)
//这样就大功告成了,来看看效果图
主播显示的3dtouch
用户显示的3dtouch
马甲包显示的3dtouch
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; self.window.backgroundColor = [UIColor whiteColor]; NSString *key = @"CFBundleShortVersionString"; // 上一次的使用版本(存储在沙盒中的版本号) NSString *oldVersion = [[NSUserDefaults standardUserDefaults] objectForKey:version]; // 当前软件的版本号(从Info.plist中获得) NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key]; if ([currentVersion isEqualToString:oldVersion]) { // 版本号相同:这次打开和上次打开的是同一个版本 //自动获取跟控制器,此方法内部做初始化3dtouch处理 UIViewController *root = [BWJGetRootController autoGetRootController]; //设置广告页 [self setupXHLaunchAd]; self.window.rootViewController = root; } else { // 这次打开的版本和上一次不一样,显示新特性 // 将当前的版本号存进沙盒 [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:version]; [[NSUserDefaults standardUserDefaults] synchronize]; self.window.rootViewController = [[BWJNewfeatureController alloc] init]; } [self.window makeKeyAndVisible];
第二步:在自动获取跟控制器的工具类(BWJGetRootController)做是否显示3DTouch的判断(3D是ios9.0以上版本才可以使用)
//此方法在新特性页面点击后也会调用,所以只有初始化的tabbar的根控制器才会初始化3dtouch + (UIViewController *)autoGetRootController { homeController *tabBarController = [[homeController alloc]init]; if (IOS9) {//版本大于9.0 初始化3dtouch AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [appdelegate setUp3DtouhWithApplication:[UIApplication sharedApplication]]; } return tabBarController; }
第三步:创建appdelegate分类(AppDelegate+BWJ3Dtouch)
在.h文件声明一个方法初始化3dtouch #import "AppDelegate.h" @interface AppDelegate (BWJ3Dtouch) - (void)setUp3DtouhWithApplication:(UIApplication *)application; @end
在.m文件实现方法初始化3dtouch - (void)setUp3DtouhWithApplication:(UIApplication *)application { UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_mall"]; UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeOne localizedTitle:BWJAppType == BWJBundleTypeBaiWujie ? @"百物街商城":@"商城" localizedSubtitle:@"" icon:icon1 userInfo:nil]; UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_discovery"]; UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeTwo localizedTitle:@"动态" localizedSubtitle:@"" icon:icon2 userInfo:nil]; UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_order"]; UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeThree localizedTitle:@"我的订单" localizedSubtitle:@"" icon:icon3 userInfo:nil]; UIApplicationShortcutIcon *icon4 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_announced"]; UIMutableApplicationShortcutItem *item4 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeFour localizedTitle:@"揭晓" localizedSubtitle:@"" icon:icon4 userInfo:nil]; UIApplicationShortcutIcon *icon5 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_live"]; UIMutableApplicationShortcutItem *item5 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeFive localizedTitle:@"我要直播" localizedSubtitle:@"" icon:icon5 userInfo:nil]; UIApplicationShortcutIcon *icon6 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_wallet"]; UIMutableApplicationShortcutItem *item6 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeSix localizedTitle:@"我的钱包" localizedSubtitle:@"" icon:icon6 userInfo:nil]; NSArray *items; if ([BWJUserDefault getConfigInfo].iospay_version == IAPVersion) {//审核状态判断显示哪些 if (BWJAppType == BWJBundleTypeBaiWujie) { items = @[item1, item2, item3]; } else { items = @[item1, item3]; } } else { if ([BWJUserDefault getUserInfo].auth == 1 || ([BWJUserDefault getUserInfo].auth == 0 && [[BWJUserDefault getUser 4000 Info].auth_info.status isEqualToString:@"1"])) {//百物街主播用户 if (BWJAppType == BWJBundleTypeBaiWujie) {//百物街主包 items = @[item1, item4, item6, item5]; } else {//马甲包 items = @[item1, item4 ,item3, item6]; } } else {//非主播用户 if (BWJAppType == BWJBundleTypeBaiWujie) {//百物街主包 items = @[item1, item4, item6, item3]; } else { items = @[item1, item4, item6, item3]; } } } //设置3Dtouch数组 application.shortcutItems = items; }
在.m文件实现3dtouch的点击事件 - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler { homeController *home = (homeController *)self.window.rootViewController; BWJNavigationController *navigationController = (BWJNavigationController *)home.selectViewController; NSInteger count = navigationController.viewControllers.count; UIViewController *vc = navigationController.viewControllers[count - 1]; NSString *type = shortcutItem.type; if ([type isEqualToString:BWJ3DTouchTypeOne]) { if ([BWJUserDefault getUserInfo].ID.length) { if ([vc isKindOfClass:[BWJHomeBaseController class]]) {//如果栈上面是这个控制器,直接进入 //发通知选择商城 [[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToMallNotification object:nil]; return; } AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [delegate.tabBarController hideTabBar:NO]; [navigationController popToRootViewControllerAnimated:NO]; [delegate.tabBarController touchBtnAtIndex:0]; [[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToMallNotification object:nil]; } } else if ([type isEqualToString:BWJ3DTouchTypeTwo]){ if ([BWJUserDefault getUserInfo].ID.length) { if ([vc isKindOfClass:[BWJDiscoveryBaseController class]]) {//如果栈上面是这个控制器,直接进入 //发通知选中动态 [[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToDiscoveryNotification object:nil]; return; } AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [delegate.tabBarController hideTabBar:NO]; [navigationController popToRootViewControllerAnimated:NO]; [delegate.tabBarController touchBtnAtIndex:2]; } } else if ([type isEqualToString:BWJ3DTouchTypeThree]) { if ([BWJUserDefault getUserInfo].ID.length) { if ([vc isKindOfClass:[BWJMyOrderMainController class]]) { return; } BWJMyOrderMainController *myOrder = [[BWJMyOrderMainController alloc] init]; [navigationController pushViewController:myOrder animated:YES]; } } else if ([type isEqualToString:BWJ3DTouchTypeFour]) { if ([BWJUserDefault getUserInfo].ID.length) { if ([vc isKindOfClass:[BWJAnnoucedBaseController class]]) {//如果栈上面是这个控制器,直接进入 //发通知选中动态 [[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToAnnoucedNotification object:nil]; return; } AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [delegate.tabBarController hideTabBar:NO]; [navigationController popToRootViewControllerAnimated:NO]; [delegate.tabBarController touchBtnAtIndex:1]; } } else if ([type isEqualToString:BWJ3DTouchTypeFive]) { if ([BWJUserDefault getUserInfo].ID.length) { if ([vc isKindOfClass:[startplay class]] || [vc isKindOfClass:[LiveShow class]] || [vc isKindOfClass:[BWJChooseProductController class]]) {//如果栈上面是这个控制器,直接进入 return; } for (UIViewController *vc in navigationController.viewControllers) { if ([vc isKindOfClass:[moviePlay class]]) { [BWJTipsVew showTipsViewWithString:@"请先退出直播间再开播哦!"]; return; } } [navigationController popToRootViewControllerAnimated:NO]; AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [appdelegate.tabBarController touchBtnAtIndex:2]; } } else { if ([BWJUserDefault getUserInfo].ID.length) { if ([vc isKindOfClass:[BWJMyWalletViewController class]]) { return; } BWJMyWalletViewController *myWallet = [[BWJMyWalletViewController alloc] init]; [navigationController pushViewController:myWallet animated:YES]; } } }
//这样就大功告成了,来看看效果图
主播显示的3dtouch
用户显示的3dtouch
马甲包显示的3dtouch
相关文章推荐
- CSDN第一天——简单的登录注册及针对不同用户显示不同界面
- SharePoint 2010 calendar inbox folder web part 针对不同用户
- SharePoint 2010 根据不同的用户权限显示不同的导航
- CSS hack:针对IE6,IE7,firefox显示不同效果
- php判断用户IP 显示不同的页面
- [Sencha Touch/ExtJS] (函数节流)阻止用户快速频繁点击,导致多次触发点击事件
- iOS-如何集成iOS9里的3D Touch
- CSS hack:针对IE6,IE7,firefox显示不同效果
- 关于3D Touch从app图标快速入口篇.
- iOS推送、3D touch、分享等进入APP的不同跳转方式
- 在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法。两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点。 $().each,对于这个方法,在
- css_针对IE6,IE7,IE8,IE9,firefox显示不同效果
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 用户表的设计思想分享[教师、职工、学生]
- ASP.NET - 如何:向匿名用户和登录用户显示不同的信息
- 动手写一个快速集成网易新闻,腾讯视频,头条首页的ScrollPageView,显示滚动视图
- windows下配置文件共享,针对不同用户要不同权限
- 为了增加用户体验,button点击与不点击显示不同的图片
- [zz] 设置演示文稿播放时对演讲者和用户显示不同内容
- CSS hack:针对IE6,IE7,firefox显示不同效果
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 用户密码安全增强