3DTouch简单实现

来源:互联网 发布:js combox获取选中值 编辑:程序博客网 时间:2024/06/17 01:54

分两种实现方式:1.静态的在plist文件里面添加,2.在AppDelegate里通过代理使用代码来动态实现。

一,静态实现

静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。 
首先,在info.plist文件中添加如下键值(我在测试的时候,系统并没有提示,只能手打上去):
先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:
必填项(下面两个键值是必须设置的): 
UIApplicationShortcutItemType  这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle  这个键值设置标签的标题
选填项(下面这些键值不是必须设置的) :
UIApplicationShortcutItemSubtitle  设置标签的副标题
UIApplicationShortcutItemIconType  设置标签Icon类型
UIApplicationShortcutItemIconFile   设置标签的Icon文件
UIApplicationShortcutItemUserInfo  设置信息字典(用于传值)

二,动态实现 

动态标签是我们在程序中,通过代码添加的,与之相关的类,主要有三个:
UIApplicationShortcutItem  创建3DTouch标签的类
UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类
UIApplicationShortcutIcon 创建标签中图片Icon的类
 

1.在AppDelegate的代理方法里实现;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     [ self set3DTouch];

- (void)set3DTouch{
    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片1"];
    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片2"];
    UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片3"];
    UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"UITouchText.1" localizedTitle:@"足迹" localizedSubtitle:nil icon:icon1 userInfo:nil];
    UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"UITouchText.2" localizedTitle:@"发现" localizedSubtitle:nil icon:icon2 userInfo:nil];
    UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"UITouchText.3" localizedTitle:@"" localizedSubtitle:nil icon:icon3 userInfo:nil];
    NSArray *arr = @[item1, item2, item3];
    [UIApplication sharedApplication].shortcutItems = arr;
      
}

2.当我们通过标签进入app时,就会在appDelegate中调用这样一个回调,我们可以获取shortcutItem的信息进行相关逻辑操作

- (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{
    if ([shortcutItem.type isEqualToString:@"UITouchText.1"]) {
        NSLog(@"编写跳转到的ViewController");
    }else if ([shortcutItem.type isEqualToString:@"UITouchText.2"]){
    }else if ([shortcutItem.type isEqualToString:@"UITouchText.3"]){
    }
}
这里有一点需要注意:我们在app的入口函数:
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions;
也需要进行一下判断,在launchOptions中有UIApplicationLaunchOptionsShortcutItemKey这样一个键,通过它,我们可以区别是否是从标签进入的app,如果是则处理结束逻辑后,返回NO,防止处理逻辑被反复回调。
几点注意:
1、快捷标签最多可以创建四个,包括静态的和动态的。
2、每个标签的题目和icon最多两行,多出的会用...省略


0 0
原创粉丝点击