3D Touch实现以及相应界面的跳转(最新)

摘要:从6s.6sPlus开始(iOS9),苹果添加一项3D Touch功能项,带给用户不一样的用户体验.但是模拟器暂时是不支持3D Touch 的.苹果官方是这么说的:

With Xcode 7.0 you must develop on a device that supports 3D Touch. Simulator in Xcode 7.0 does not support 3D Touch.

但是, github 大神提供了一种插件,是你的 Xcode 同样可以体验3D Touch.是不是有点儿小激动呀.

大神 github 网址:https://github.com/DeskConnect/SBShortcutMenuSimulator

具体的配置,作者已经些的比较详细了,但如果你有真机,这些就都不用考虑啦.

一.3D Touch 有三大模块:

1.Home Screen Quick Actions ----通过用力按压屏幕应用 icon 从而选择相应的功能跳转相应的界面.(也是本文主要介绍的模块).

2.peek and pop ----进入应用后,按压相应的 view 从而进行进一步的操作

3.Force Properties ----力度。我们可以检测某一交互的力度值,来做相应的交互处理。例如,我们可以通过力度来控制快进的快慢,音量增加的快慢等。

二.Home Screen Quick Actions 的实现

这一项有两种实现方式:静态. 动态

静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。

1.我们先来看静态标签的配置:

首先,在info.plist文件中添加如下键值(复制,粘贴吆):


info.plist 里面添加

先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:

必填项(下面两个键值是必须设置的):

UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串

UIApplicationShortcutItemTitle 这个键值设置标签的标题

选填项(下面这些键值不是必须设置的):

UIApplicationShortcutItemSubtitle 设置标签的副标题

UIApplicationShortcutItemIconType 设置标签Icon类型

UIApplicationShortcutItemIconFile  设置标签的Icon文件

UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)

我们如上截图设置后,运行程序,用我们前面的方法进行测试,效果如下:


真机测试效果

其中UIApplicationShortcutItemIconType 设置标签Icon类型,苹果提供一下:

typedef enum UIApplicationShortcutIconType : NSInteger {

UIApplicationShortcutIconTypeCompose,

UIApplicationShortcutIconTypePlay,

UIApplicationShortcutIconTypePause,

UIApplicationShortcutIconTypeAdd,

UIApplicationShortcutIconTypeLocation,

UIApplicationShortcutIconTypeSearch,

UIApplicationShortcutIconTypeShare,

UIApplicationShortcutIconTypeProhibit,

UIApplicationShortcutIconTypeContact,

UIApplicationShortcutIconTypeHome,

UIApplicationShortcutIconTypeMarkLocation,

UIApplicationShortcutIconTypeFavorite,

UIApplicationShortcutIconTypeLove,

UIApplicationShortcutIconTypeCloud,

UIApplicationShortcutIconTypeInvitation,

UIApplicationShortcutIconTypeConfirmation,

UIApplicationShortcutIconTypeMail,

UIApplicationShortcutIconTypeMessage,

UIApplicationShortcutIconTypeDate,

UIApplicationShortcutIconTypeTime,

UIApplicationShortcutIconTypeCapturePhoto,

UIApplicationShortcutIconTypeCaptureVideo,

UIApplicationShortcutIconTypeTask,

UIApplicationShortcutIconTypeTaskCompleted,

UIApplicationShortcutIconTypeAlarm,

UIApplicationShortcutIconTypeBookmark,

UIApplicationShortcutIconTypeShuffle,

UIApplicationShortcutIconTypeAudio,

UIApplicationShortcutIconTypeUpdate

} UIApplicationShortcutIconType;

当然也可以自定制图片啦.具体方法在下面哦.

重点来啦:那么,具体的跳转该如何实现的呢.

类似推送,当我们点击标签进入应用程序时,也可以进行一些操作,我们可以看到,在applocation中增加了这样一个方法:

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

当然具体的跳转方法我以贴图为例,以供参考

2.接下来再来看动态标签的配置:

动态标签是我们在程序中,通过代码添加的,与之相关的类,主要有三个:

UIApplicationShortcutItem 创建3DTouch标签的类

UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类

UIApplicationShortcutIcon 创建标签中图片Icon的类

// 以下是全部代码,且都是在delegate.m文件中实现的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//使用系统提供的ShortcutIcon类型

UIApplicationShortcutIcon *shareOpportunityIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeShare];

UIApplicationShortcutItem *shareOpportunityItem = [[UIApplicationShortcutItem alloc] initWithType:@"shareOpportunity" localizedTitle:@"分享"***"" localizedSubtitle:nil icon:addOpportunityIcon userInfo:nil];

UIApplicationShortcutIcon *meMarkIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeTaskCompleted];

UIApplicationShortcutItem *meMarkItem = [[UIApplicationShortcutItem alloc] initWithType:@"bookMark" localizedTitle:@"我的优惠券" localizedSubtitle:nil icon:meMarkIcon userInfo:nil];

UIApplicationShortcutIcon *searchGuestIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch];

UIApplicationShortcutItem *searchGuestItem = [[UIApplicationShortcutItem alloc] initWithType:@"searchGuest" localizedTitle:@"搜索" localizedSubtitle:nil icon:searchGuestIcon userInfo:nil];

//自定义ShortcutIcon

// 如果设置了自定义的icon,那么系统自带的就不生效

UIApplicationShortcutIcon *myGuestIcon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"myGuestImage"];

UIApplicationShortcutItem *myGuestItem = [[UIApplicationShortcutItem alloc] initWithType:@"myGuest" localizedTitle:@"我的客户" localizedSubtitle:nil icon:myGuestIcon userInfo:nil];

[UIApplication sharedApplication].shortcutItems = @[addOpportunityItem,bookMarkItem,searchGuestItem,myGuestItem];

return YES;

}

// 作用:点击快速启动项菜单上的某个快速启动项跳转到指定界面

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

{

// 方式一:type

if ([shortcutItem.type isEqualToString:@"addOpportunity"]) {

NSLog(@"点击了添加机会item");

} else if ([shortcutItem.type isEqualToString:@"bookMark"]) {

NSLog(@"点击了添加小记item");

} else if ([shortcutItem.type isEqualToString:@"myGuest"]) {

NSLog(@"点击了我的客户item");

} else {

NSLog(@"点击了搜索客户item");

}

// 方式二:title或者subtitle

if ([shortcutItem.localizedTitle isEqualToString:@"添加机会"]) {

NSLog(@"点击了添加机会item");

} else if ([shortcutItem.localizedTitle isEqualToString:@"添加小记"]) {

NSLog(@"点击了添加小记item");

} else if ([shortcutItem.localizedTitle isEqualToString:@"我的客户"]) {

NSLog(@"点击了我的客户item");

} else {

NSLog(@"点击了搜索客户item");

}

}

相应的跳转方法和上面的静态跳转方法是一样的.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 专著:http://www.jianshu.com/p/3443a3b27b2d 1.简单的介绍一下3D Touc...
    violafa阅读 1,007评论 1 0
  • 3D Touch简介 2015年,苹果发布了iOS9以及iphone6s/iphone6s Plus,其中最具有创...
    简简蜗牛阅读 599评论 0 0
  • 1.简单的介绍一下3D Touch 3D Touch的触控技术,被苹果称为新一代多点触控技术。其实,就是此前在Ap...
    Camille_chen阅读 12,036评论 19 33
  • 3D Touch 有两种方式,一种是在按压icon图标出现快捷标签跳转到相应界面,这里的快捷标签最多只能有四个;另...
    杰铭的博客阅读 524评论 0 1
  • 3D Touch 概述: 从.Net转来也快有半年之多了,从小生到现在也算是经历了无所bug了,不过还是打到不了I...
    LitterL阅读 679评论 8 1