通过主屏幕的应用Icon,我们可以用3D Touch呼出一个菜单,进行快速定位应用功能模块相关功能的开发。
这是在UIApplicationShortcutItems
中添加多个item(静态标签)
在Appdelegate.m 中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{}
- (void)creatShortcutItem{
UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"Shortcut1" localizedTitle:@"搜索" localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeLocation] userInfo:nil];
UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"Shortcut2" localizedTitle:@"设置" localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay] userInfo:nil];
UIApplicationShortcutItem *item3 = [[UIApplicationShortcutItem alloc] initWithType:@"Shortcut3" localizedTitle:@"标签" localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeShare] userInfo:nil];
UIApplicationShortcutItem * item4 = [[UIApplicationShortcutItem alloc]initWithType:@"Shortcut4" localizedTitle:@"自由" localizedSubtitle:@"自定义" icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"iconfont-hometouch.png"] userInfo:nil];
[[UIApplication sharedApplication] setShortcutItems: @[ item1, item2, item3, item4 ]];
}
注意:真机测试时发现标签的图片显示不正确或者替换图片不成功时,试试修改代码后删除该应用重新安装。
应用在后台运行时,调用该方法
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
if (shortcutItem) {
//判断先前我们设置的快捷选项标签唯一标识,根据不同标识执行不同操作
if ([shortcutItem.type isEqualToString:@"Shortcut1"]) {//进入搜索界面
TabBarViewController * tab = [[TabBarViewController alloc]init];
self.window.rootViewController = tab.tabBarController;
SearchVC * vcc = [[SearchVC alloc]init];
vcc.hidesBottomBarWhenPushed = YES;
[tab.tabBarController.selectedViewController pushViewController:vcc animated:YES];
}
if ([shortcutItem.type isEqualToString:@"Shortcut2"]) {
TabBarViewController * tab = [[TabBarViewController alloc]init];
self.window.rootViewController = tab.tabBarController;
tab.tabBarController.selectedIndex = 4;
SetterVC * vcc = [[SetterVC alloc]init];
vcc.hidesBottomBarWhenPushed = YES;
[tab.tabBarController.selectedViewController pushViewController:vcc animated:YES];
}
if ([shortcutItem.type isEqualToString:@"Shortcut3"]) {
TabBarViewController * tab = [[TabBarViewController alloc]init];
self.window.rootViewController = tab.tabBarController;
tab.tabBarController.selectedIndex = 4;
FilterVC * vcc = [[FilterVC alloc]init];
vcc.hidesBottomBarWhenPushed = YES;
[tab.tabBarController.selectedViewController pushViewController:vcc animated:YES];
}
}
if (completionHandler) {
completionHandler(YES);
}
}
应用未启动时,调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{}里的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 如果是从快捷选项标签启动app,则根据不同标识执行不同操作,然后返回NO,防止调用- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
if (shortcutItem) {
// 判断先前我们设置的快捷选项标签唯一标识,根据不同标识执行不同操作
if ([shortcutItem.type isEqualToString:@"Shortcut1"]) {//进入搜索界面
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
TabBarViewController * tab = [[TabBarViewController alloc]init];
self.window.rootViewController = tab.tabBarController;
[self.window makeKeyAndVisible];
SearchVC * vcc = [[SearchVC alloc]init];
vcc.hidesBottomBarWhenPushed = YES;
[tab.tabBarController.selectedViewController pushViewController:vcc animated:YES];
});
}
return NO;
}
return YES;
}
此处使用dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{})
是为了能正常显示广告视图,并解决广告视图的NSTimer
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(removeLun) userInfo:nil repeats:NO];