3DTouch推出很长时间了,但是公司的项目一直没有加入这个元素,今天突然要加一个入口,就看了看文档,加了这么个功能。OK,看截图代码吧。
上面是微信消息列表中的3DTouch效果,然后还有按压App图标的效果
消息列表中的不是很常见,所以我们先来解决按压App图标出现快速入口这个需求。
添加快速入口有两种方式,一种是静态添加,一种是动态添加。
静态就是在工程中的info.plist文件中添加相关的内容,只要运行就会生效。动态添加就是写在代码里,这种方式需要运行过一次之后才会生效。
好了,先来说静态添加:
不需要写代码,在info.plist文件中加一个字段 :UIApplicationShortcutItems,然后添加items,还是截图比较直观
解释下这些字段都是什么意思:
UIApplicationShortcutItemType:这个键值设置一个快捷通道类型的字符串(我们可以监听该项的值来判断用户是从哪一个标签进入App的,该字段的值可以为空但是必须创建)
UIApplicationShortcutItemTitle:这个键值设置标签的标题(我们可以监听该项的值来判断用户是从哪一个标签进入App的,必须创建)
UIApplicationShortcutItemSubtitle:设置标签的副标题 (可以不创建)
UIApplicationShortcutItemIconType:设置标签的图标样式(可以不创建)
UIApplicationShortcutItemIconFile:设置自定义标签图片文件的路径(可以不创建)
UIApplicationShortcutItemUserInfo:设置用户信息,是一个字典类型,可以用来传值 (可以不创建)
就是这些,可以新建一个工程试一下了。
当然不能这么简单,我们还想点一下“扫一扫”进入相应的页面呢。这也很简单,在进入主页面的时候做一个判断,看是否通过点击UIApplicationShortcutItem进入。
UIApplicationShortcutItem *item = _notificationDict[UIApplicationLaunchOptionsShortcutItemKey];
if (item) {
if ([item.type isEqualToString:@"e"]) {
// 进入相应页面
}
}
新问题又来了,换一台iOS9一下系统的设备试一下,进来就崩溃了,好突然。
这个更简单了,判断一下是什么设备就OK啦。
if ([UIDevice currentDevice].systemVersion.floatValue > 9) {
}
到此,静态添加,基本结束。建议用静态添加的方法,不然测试的同学可能回来找你问为什么3DTouch不能用。(2333333)
下面是动态添加的方法:
在根视图的viewDidLoad方法中加入下面的代码
// 创建标签的ICON图标。
UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
// 创建一个标签,并配置相关属性。
UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc] initWithType:@"two" localizedTitle:@"分享" localizedSubtitle:@"么么哒" icon:icon userInfo:nil];
// 将标签添加进Application的shortcutItems中。
[UIApplication sharedApplication].shortcutItems = @[item];
这就好了,要点击进入相应页面,上面介绍过了。
So easy~今天就到这,消息列表的3DTouch怎么办,下一篇来贴代码,到了下班时间,先去晚饭啦。