iOS-3D Touch简用

3D Touch

概述:

从.Net转来也快有半年之多了,从小生到现在也算是经历了无所bug了,不过还是打到不了Ios在我心目中的地位!!!

  • 前言

    在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,
    其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互。但是对于开发人员来说我们确实遇到了一个难题:
    xcode7是支持3D Touch开发的,可是模拟器并不支持这个手势

不过还好的是,在我们码农界的大神们开发了一个对于此bug的插件,那就SBShortcutMenuSimulator

  • 主题

    好了,我们废话不多说先看看我们项目的预期样子吧!

git.gif
    之所以是用这个项目来测试,是因为以前在自学的时候,这是人生中的第一个Ios项目,经久不忘啊!
  • 开撸

    1. 开撸之前我们来看两个方法:

    //程序的入口
    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    return YES;
    }

    `这一个方法为程序的入口也就是初始化窗口的地方,然而也是我们初始化3D Touchview按钮显示在地方`
     ```objc
    //3D Touch响应事件
    -(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
    {
    }
    

    这一个方法为3D Touch响应事件也就是我在桌面使用捷径3D Touch选择某一处view按钮的时候会调用得事件

    1. 了解上面两个方法之后我们就开始正式的撸代码了,首先我们想要加载3D Touch按钮,那么我们就可以在程序的入口的方法中给UIApplication一个shortcutItems的属性赋值,其实这个属性也就是存放在3D Touch显示的每一个view按钮的集合,而它里面放着的就是UIApplicationShortcutItem

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// UIApplicationShortcutIcon为创建显示的图片的类
// 创建图片一共有两种方式 一种使用系统的图片 一种使用自定义的图片
// iconWithType:这个类方法为系统方法
// iconWithTemplateImageName:这个为自己创建的方法
UIApplicationShortcutIcon *icon0 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCompose ];
// initWithType:用作以后响应的时候判断
// localizedTitle:在3DTouch中显示的文字
// localizedSubtitle:子标题
// icon:图片
// userInfo:传入的其余信息
UIApplicationShortcutItem *item0 =[[UIApplicationShortcutItem alloc]initWithType:@"hall" localizedTitle:@"购彩大厅" localizedSubtitle:nil icon:icon0 userInfo:nil];
UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd ];
UIApplicationShortcutItem *item1 =[[UIApplicationShortcutItem alloc]initWithType:@"are" localizedTitle:@"竞技场" localizedSubtitle:nil icon:icon1 userInfo:nil];
UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch ];
UIApplicationShortcutItem *item2 =[[UIApplicationShortcutItem alloc]initWithType:@"his" localizedTitle:@"开奖信息" localizedSubtitle:nil icon:icon2 userInfo:nil];
UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay];
UIApplicationShortcutItem *item3 =[[UIApplicationShortcutItem alloc]initWithType:@"mylottery" localizedTitle:@"我的彩票" localizedSubtitle:nil icon:icon3 userInfo:nil];
//添加shortcutItems
application.shortcutItems= @[item0,item1,item2,item3];
return YES;
}

   3. UIApplicationShortcutIcon为创建显示的图片的类

        `创建图片一共有两种方式:`
    * 一种使用系统的图片
```objc
+(instancetype)iconWithType:(UIApplicationShortcutIconType)type;
其中UIApplicationShortcutIconType中有默认的这几个
UIApplicationShortcutIconTypeCompose,//编辑的图标
UIApplicationShortcutIconTypePlay,//播放图标
UIApplicationShortcutIconTypePause,//暂停图标
UIApplicationShortcutIconTypeAdd,//添加图标
UIApplicationShortcutIconTypeLocation,//定位图标
UIApplicationShortcutIconTypeSearch,//搜索图标
UIApplicationShortcutIconTypeShare//分享图标
* 一种使用自定义的图片
```objc

+(instancetype)iconWithTemplateImageName:(NSString*)templateImageName;

   4. UIApplicationShortcutItem为创建显示view里面包含图片以及文字
    * `创建也有两种方式   第一种`
```objc
因为很长这里简写了 :
initWithType:@"are"localizedTitle:@"竞技场"localizedSubtitle:nilicon:icon1userInfo:nil
//initWithType:用作以后响应的时候判断
//localizedTitle:在3DTouch中显示的文字
//localizedSubtitle:子标题
//icon:图片
//userInfo:传入的其余信息
* `创建也有两种方式  第二种`
//initWithType:用作以后响应的时候判断
//localizedTitle:在3DTouch中显示的文字
-(instancetype)initWithType:(NSString*)type localizedTitle:(NSString*)localizedTitle;

只要完成上述情况 那么你应该能看到这张图片了

Snip20160110_4.png
  1. 那么在最后我们来完成如何响应事件:
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
//为显示第几页数据
int i=0;
if ([shortcutItem.type isEqualToString:@"hall"]) {
    i=0;
}else if([shortcutItem.type isEqualToString:@"are"]) {
    i=1;
}else if([shortcutItem.type isEqualToString:@"his"]) {
    i=3;
}else if([shortcutItem.type isEqualToString:@"mylottery"]) {
    i=4;
}
//    不管我点击的是谁 我都调用TabBar  只不过我传入了索引
    LitterLTabBarController *tabBar = [LitterLTabBarController TabBarSelectIndex:i];
//最后把控制器设置为根控制器
    self.window.rootViewController = tabBar;
}

在我的项目中它根控制器为UITabBarController控制器,再加上我在先前创建3D Touch的时候传入过initWithType,所以当我在外部使用3D Touch快速进入的时候,通过他的initWithType判断我的索引,前提我自己是知道它的索引的,在之后我把传入的索引作为UITabBarController的selectedIndex也就是开始展示的控制器,那么我们的整个就算是完事了

  • 结束

                          本章到此结束
                   欢迎各位码友随意转载并指正
    

源代码:Litter_Lottery

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

推荐阅读更多精彩内容