3D Touch 的实现和系统分享功能

2177人阅读 评论(0) 收藏 举报
分类:

3D Touch其实就是快速进入指定app界面的一种方式。
下面和大家分享一下简单的实现
1、静态标签
静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。
我们先来看静态标签的配置:
首先,在info.plist文件中添加如下键值(我在测试的时候,系统并没有提示,只能手打上去):


Paste_Image.png

先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:
必填项(下面两个键值是必须设置的):
UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle 这个键值设置标签的标题
选填项(下面这些键值不是必须设置的) :
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)
我们如上截图设置后,运行程序,用我们前面的方法进行测试,效果如下:


Paste_Image.png


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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
CGFloat currentDeviceVersionFloat = [[[UIDevice currentDevice] systemVersion] floatValue];
//判断版本号,3D Touch是从iOS9.0后开始使用
    if (currentDeviceVersionFloat >= 9.0) {
        UIApplicationShortcutIcon *iconFitness = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片1"];
        //菜单文字
        UIMutableApplicationShortcutItem *itemFitness = [[UIMutableApplicationShortcutItem alloc] initWithType:@"1" localizedTitle:@"标题一"];
        //绑定信息到指定菜单
        itemFitness.icon = iconFitness;

        // 菜单图标
        UIApplicationShortcutIcon *iconRun = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片二"];
        //菜单文字
        UIMutableApplicationShortcutItem *itemRun = [[UIMutableApplicationShortcutItem alloc] initWithType:@"2" localizedTitle:@"标题二"];
        //绑定信息到指定菜单
        itemRun.icon = iconRun;
        //绑定到App icon
        application.shortcutItems = @[itemFitness,itemRun];
    }
}

响应事件如下

- (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{
    if ([shortcutItem.type isEqualToString:@"1"]) {
//如果有导航栏参考下面注释部分
    UINavigationController *myNavi = self.window.rootViewController.childViewControllers[0];
//        _tabBar.selectedIndex = 0;
       UIViewController * picker1 = [[UIViewController alloc]init];//进入窗口的初始化
//利用NSUserDefaults 的标识,来防止重复初始化VC
    //    if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d"]) {
     //       [myNavi popViewControllerAnimated:NO];
      //      [myNavi pushViewController:_picker1 animated:YES ];
    //    }else{
         [myNavi pushViewController:picker1 animated:YES ];

    //    }

    }
    if ([shortcutItem.type isEqualToString:@"2"]) {
    / /   UINavigationController *myNavi = self.window.rootViewController.childViewControllers[1];
    //    _tabBar.selectedIndex = 1;
       UIViewController *vc = [[UIViewController1 alloc]init];//进入窗口的初始化
   //     if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d1"]) {
     //       [myNavi popViewControllerAnimated:NO];
      //      [myNavi pushViewController:_LJHVC animated:YES ];
    //    }else{

        [myNavi pushViewController:vc animated:YES ];

    //    }

    }


}

如果你在为系统“分享”犯愁的话,我可以悄悄的告诉你,这个是上架后系统自带的系统分享功能(我搞了一天多0.0)



文/航彪彪(简书作者)
原文链接:http://www.jianshu.com/p/d6c913c7973a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
查看评论

iOS推送、3D touch、分享等进入APP的不同跳转方式

一、当前以极光推送为例,如何从通知栏点击进入到APP的不同页面APPDelegate.m文件实现接受到远程推送的通知方法,在我们点击通知栏的时候,这个方法仍然会走一次(这里介绍的方法是改变root后进...
  • Yj_sail
  • Yj_sail
  • 2017年01月03日 23:04
  • 839

IOS实现3DTouch功能

赶需求期间,想着别人应用都搞起3DTouch功能了,咱也来装逼一会,凸显下逼格。 废话少说,先搜索了前人的热心奉献,自己再动手丰衣足食,下面归纳总结下。 首先,想要体验3DTouch功能,必须至少得是...
  • a416863220
  • a416863220
  • 2016年04月22日 10:35
  • 9196

iOS推送、3D touch、分享等进入APP的不同跳转方式

[[AccountManager sharedInstance] changeRootViewControllerWithHome]; //改变rootviewController为主页面(我这里为t...
  • Yj_sail
  • Yj_sail
  • 2016年07月01日 11:56
  • 3250

3DTouch的分享

iOS 3DTouch功能
  • Coding_Niu
  • Coding_Niu
  • 2016年02月26日 11:11
  • 1458

iOS新特性实现3DTouch开发

好久没有写过文章了,今天就给大家带来一篇比较简单的开发教程吧!目的是为了让大伙能够避开那些不必要的坑,快速高效的实现功能。今天呢来和大家讲一下iOS9的新特性3DTouch开发(iOS10都已经出了B...
  • shenjie12345678
  • shenjie12345678
  • 2016年07月27日 11:00
  • 1978

iOS开发 swift 3dTouch实现 附代码

iOS开发 swift 3dTouch实现 附代码 一、What? 从iphone6s开始,苹果手机加入了3d touch技术,最简单的理解就是可以读取用户的点击屏幕力度大小,根据力度大小...
  • YubaoLouisLiu
  • YubaoLouisLiu
  • 2018年01月23日 16:16
  • 269

IOS实现3DTouch功能

3DTouch目前在手机上有两种体现方式,一种是用力按下app的图片icon,会弹出选项菜单,就像电脑上的右键。一种是在应用内的界面上用力按下,弹出的预览界面。 接下...
  • iOS_yanmy
  • iOS_yanmy
  • 2016年10月09日 23:06
  • 3076

IOS_3DTouch实现

1.前言     随着6S的到来,3DTouch被各大热门APP迅速普及,博主亲自体验后,发现使用便捷性大幅提高,随后自己照着文档,写了个Demo出来,分享给大家,希望能对有需要的朋友提供有一些帮助。...
  • gaoyong0624
  • gaoyong0624
  • 2015年12月15日 16:44
  • 582

IOS 实现3D Touch在tableView的简单应用(swift版)

之前记录过OC版实现3D Touch功能的小小演示,最近无事整整swift,也能弄一过swift版的3D Touoch。。。 上代码。 一、3D Touch重按主屏icon出现快捷标签有两种添...
  • u010277446
  • u010277446
  • 2016年06月02日 19:03
  • 4467

IOS开发之 一起用Swift来玩一玩3D Touch

Swift 2.3 IOS 8.0 XCode 8.0 添加入口标签在这里只说下静态的好了,暂时还用不到动态的,e.g.UIApplicationShortcutItems ...
  • sbt0198
  • sbt0198
  • 2017年02月07日 14:45
  • 1130
    个人资料
    持之以恒
    等级:
    访问量: 61万+
    积分: 8465
    排名: 2949
    最新评论
    联系方式
    微信:chenfan1112015 QQ:851327579