3DTouch的分享

原创 2016年02月26日 11:11:13

众所周知,苹果公司每年9月份都会发布一款新的iPhone设备,而每代的iPhone都会在硬件和技术上有所升级。

随着iPhone6S、iPhone6SPlus 的发布,一项新的技术也出现在世人的视野中,是的,就是3DTouch功能。一直想分享这个新功能给大家,但是带班就忙起来了,现在利用空余时间整理一下。

但是也有一个缺陷,3DTouch的只能在6S,6SPlus以及以后的产品中使用。

更多关于3DTouch的功能,大家可以去网上找找文字资料,我就不在这过多赘述了,咱们直接上代码。

大家按照这个步骤将代码添加到自己的工程中

第一步:为桌面应用图标添加3DTouch功能,在AppDelegate.m文件的-(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 方法中添加以下代码:

// 创建一个应用程序快捷方式项
    UIMutableApplicationShortcutItem *itemOne = [[UIMutableApplicationShortcutItem alloc] initWithType:@"111" localizedTitle:@"拍照"];
    UIApplicationShortcutIcon *iconOne = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCapturePhoto];
    itemOne.icon = iconOne;

    // 创建跳转到相册的快捷方式
    UIApplicationShortcutIcon *iconTwo = [UIApplicationShortcutIcon iconWithTemplateImageName:@"test"];// 此处显示不了彩色图片,只能是黑色镂空的图片
    UIMutableApplicationShortcutItem *itemTwo = [[UIMutableApplicationShortcutItem alloc] initWithType:@"222" localizedTitle:@"相册" localizedSubtitle:@"这是一个子标题" icon:iconTwo userInfo:nil];

    application.shortcutItems = @[itemOne,itemTwo];

第二步:还需在AppDelegate.m中实现一个委托方法

{
    // 在此方法中完成点击后具体的操作
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.editing = YES;

    // 此处没有判断相机是否可用,因为3DTouch只能真机调试,真机肯定能用
    if ([shortcutItem.type isEqualToString:@"111"])
    {
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self.window.rootViewController presentViewController:imagePicker animated:YES completion:nil];
    }
    else
    {
        imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self.window.rootViewController presentViewController:imagePicker animated:YES completion:nil];
    }
}
  • 完成上面两步之后就可以通过3DTouch功能进入到App的对应页面中

3DTouch还可以对二级页面进行预览,那怎么实现的呢?我在这举个简单例子,比如我现在可以通过点击一个button跳转到二级页面,那么就可以绑定此功能,也就是咱们接下来要做的第三步

第三步:在当面ViewController中创建一个button
@property (strong, nonatomic) IBOutlet UIButton *button;
并且一定要在ViewDidLoad方法中注册回调

// 注册回调
    [self registerForPreviewingWithDelegate:self sourceView:self.button];

第四步:遵循协议UIViewControllerPreviewingDelegate 然后去实现两个协议方法

#pragma mark UIViewControllerPreviewingDelegate Method
// 预览的视图
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
{
    // 通过storyboard获取当前的VC
    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"erjiVC"];
    return vc;
}

// 继续用力按可推进二级界面
- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
    [self showViewController:viewControllerToCommit sender:self];
}
  • 做完了上面几步后,基本的功能就已经完成啦,那其实3DTouch还可以稍微复杂那么一点点的,还可以在进入二级页面之前有其他的操作,比如说:

第五步:在要进入的二级页面直接实现一个委托方法

// 返回预览下面的快捷方式
- (NSArray<id<UIPreviewActionItem>> *)previewActionItems
{
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"分享" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"点击了分享按钮!");
    }];
    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"收藏" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"点击了收藏按钮!");
    }];
    NSArray *actions = @[action1,action2];
    return actions;
}

好啦,恭喜您,一个小的demo已经可以去测试了,但是注意3DTouch功能在模拟器上不能测试,所以骚年快去连接手机吧~

那关于代码我也已经上传到coding了,如果需要请点击下载代码

下载代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Coding_Niu/article/details/50748302

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

3D Touch其实就是快速进入指定app界面的一种方式。 下面和大家分享一下简单的实现 1、静态标签 静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序...
  • yishengzhiai005
  • yishengzhiai005
  • 2016-12-07 15:30:11
  • 2181

IOS实现3DTouch功能

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

3DTouch的分享

iOS 3DTouch功能
  • Coding_Niu
  • Coding_Niu
  • 2016-02-26 11:11:13
  • 1458

3D Touch 使用心得(仿微信3D Touch)

3D Touch简介随着iOS9以及iPhone 6s和iPhone 6s plus的发布,苹果添加一种立体的用户界面: 用户在主屏幕上不需要打开APP,按压图标就可以快速访问APP提供的一些功能。...
  • jinglijun
  • jinglijun
  • 2015-12-06 16:01:57
  • 3699

为啥有的app 3dtouch home屏有分享,有的app木有

现在从app store上下载的默认都带一个分享的功能, 如果你是真机调试自己的app, 你没有加入3D Touch功能的话 是不会显示的, 但是等你提交到商店后, 从商店下载到手机上也是自带一...
  • wxdtan
  • wxdtan
  • 2017-03-13 18:19:27
  • 319

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

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

iOS新特性实现3DTouch开发

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

IOS_3DTouch实现

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

iOS9新特性之(OC及Swift)实现3D Touch

在网上找了下资料,貌似很少的,只找到一篇简单介绍的  地址:http://www.jianshu.com/p/74fe6cbc542b 当然根据这篇文章的资料,很难做出这个有趣的功能,至少我是这么认...
  • sinat_34380438
  • sinat_34380438
  • 2016-09-08 16:36:52
  • 334

iOS ----新特性 3DTouch 开发教程全解(含源码)

本文主要讲解3DTouch各种场景下的开发方法,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置UIApplicationShortcutItem...
  • iotjin
  • iotjin
  • 2016-04-25 21:53:25
  • 570
收藏助手
不良信息举报
您举报文章:3DTouch的分享
举报原因:
原因补充:

(最多只允许输入30个字)