iOS开发之3D Touch

3D Touch 是随着iPhone6s 和iPhone6s Plus 的推出,在两款机器上携带的一个非常有特色的功能,可以根据用户点击时的用力成都实现与用户的交互。

开发3D Touch 的话,Xcode必须是7.0之上版本,手机则需要iPhone6s之后并且系统在iOS9.0之上的手机。

写的一个小Demo:http://download.csdn.net/detail/longitachi/9197849,欢迎下载,效果图两张





一,3D Touch可以再我们点击屏幕icon图标时候,来进行一些快捷的操作方式。

实现这个效果有两种方式,一种是静态的实现方式,直接在项目总info.plist文件中添加如下字段(如下图)

第二种是动态方式创建

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //创建方式有多种,下面举得例子为创建可变的标签
    UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"imageName"];
    UIMutableApplicationShortcutItem *item = [[UIMutableApplicationShortcutItem alloc] initWithType:@"type" localizedTitle:@"标题" localizedSubtitle:@"子标题" icon:icon userInfo:@{@"key": @"value"}];
    [UIApplication sharedApplication].shortcutItems = @[item];
    
    // Override point for customization after application launch.
    NSLog(@"%s, %@", __FUNCTION__, launchOptions);
    return YES;
}
需要注意的是,如果需要点击icon图标出现的标签携带图片,那么图片的尺寸需要是35*35像素的(官方介绍: Icons should be square, single color, and 35x35 points, as shown in these  template files  and as described in  iOS Human Interface Guidelines .
完成之上操作后,你便可以运行你的Demo去尝试一下3DTouch了。

相应的,我们可以在AppDelegate中实现如下方法来实现不同的效果

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
    NSLog(@"shortcutItem%@", shortcutItem);
}


二,在应用内部实现3D Touch功能

当我们使用短信和微信、新浪微博等应用时,我们发现其应用内部也有 3D Touch 功能,效果如如下


而且这时候如果我们轻轻地上推,还会出现一些快捷操作,如下图


实现该功能并不难。当前类需要遵守协议:UIViewControllerPreviewingDelegate

接下来我们为每个表格的cell添加3dtouch

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    //注册该方法
    [self registerForPreviewingWithDelegate:self sourceView:cell];
    
    return cell;
}


接下来便是实现协议中的方法

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
{
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    //获取到indexPath,那么接下来做对应的事情就看你自己的需求了
    NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)previewingContext.sourceView];
    
    UIViewController *vc = [[UIViewController alloc] init];
    vc.preferredContentSize = CGSizeMake(0.0f, [[UIScreen mainScreen] bounds].size.height - 100);
    
    return vc;
}

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
    [self showViewController:viewControllerToCommit sender:self];
}


上面步骤实现后,我们会发现点击屏幕任意地方就会看到SecViewController的缩略图了,但是向上滑并没有上面短信界面的快捷回复,实现这个功能我们需要在SecViewcontroller中实现 - ( NSArray < id < UIPreviewActionItem >> *)previewActionItems; 这个方法,如下

- (NSArray<id<UIPreviewActionItem>> *)previewActionItems
{
    NSMutableArray *arr = [[NSMutableArray alloc] init];
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"title1" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"点击了title1");
    }];
    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"title2" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"点击了title2");
    }];
    
    [arr addObject:action1];
    [arr addObject:action2];
    
    return arr;
}

到这里基础的3D Touch功能便实现了。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值