快速集成3D Touch,针对不同的用户,不同包显示不同的3D Touch
来源:互联网 发布:淘宝三颗心要多少好评 编辑:程序博客网 时间:2024/05/22 07:50
第一步:在application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions方法里面设置根控制器,这是都知道的
- (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 getUserInfo].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
阅读全文
0 0
- 快速集成3D Touch,针对不同的用户,不同包显示不同的3D Touch
- iOS推送、3D touch、分享等进入APP的不同跳转方式
- iOS推送、3D touch、分享等进入APP的不同跳转方式
- 3D touch的使用
- 3D Touch 的实现:
- iOS9的3D Touch
- iOS-如何集成iOS9里的3D Touch
- ios9 如何集成ios9 里面的3D Touch
- Sencha touch -文字颜色不同的面板
- ios10上3D touch多个widget的显示
- 拆解iPhone 6S屏幕:8面薄层处处不同,3D Touch重新定义手机屏幕--ESM
- Instagram的3D Touch经验谈
- IOS 3D touch的使用
- iOS的3D Touch学习
- ios 3D Touch功能的实现
- 3D touch功能的封装
- ios 3D Touch功能的实现
- 3D Touch的详解
- Java Web工程目录结构
- java编程经验
- 学习迁移
- IOS,技术 目录
- 【笔记】理解去耦电容 和 旁路电容
- 快速集成3D Touch,针对不同的用户,不同包显示不同的3D Touch
- Axure谷歌浏览器Chrome扩展程序下载及安装方法
- Android 自定义车牌输入框
- 双轨迹传感器巡线
- [编程题] 偶串
- 前端表单验证常用的15个JS正则表达式
- F A ngq
- spring cloud eureka 参数配置
- Mybatis入门 操作MySQL DEMO