3DTouch的分享

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

众所周知,苹果公司每年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了,如果需要请点击下载代码

下载代码

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页