iOS3DTouch功能实现
来源:互联网 发布:现在在哪里看日剧 知乎 编辑:程序博客网 时间:2024/06/16 21:50
1:3DTouch功能
自从Iphone6s发布以来,最炫的功能就是3DTouch,这项技术,不仅极大的增加了快捷入口的方便的程度,其产品本身带来的动感交互体验也是非常带感,在这里记录一下其基本功能的实现
2:具体实现:点击应用图标实现3DTouch功能
(1:在AppDelegate中实现方法
//icon图标3DTouch//动态添加//还可以通过plist文件进行静态添加-(void)setup3DTouch:(UIApplication *)application{ UIApplicationShortcutIcon * cameraIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCompose]; UIApplicationShortcutItem * cameraItem = [[UIApplicationShortcutItem alloc] initWithType:@"ONE" localizedTitle:@"分享" localizedSubtitle:@"" icon:cameraIcon userInfo:nil]; UIApplicationShortcutIcon * shareIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeShare]; UIApplicationShortcutItem * shareItem = [[UIApplicationShortcutItem alloc] initWithType:@"TWO" localizedTitle:@"拍照" localizedSubtitle:@"" icon:shareIcon userInfo:nil]; //将items添加到app图标 application.shortcutItems = @[cameraItem,shareItem]; }
(2:实现代理方法
//同过绑定的标签type来实现具体的代码-(void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{ UINavigationController * nav = (UINavigationController *)self.window.rootViewController; if ([shortcutItem.type isEqualToString:@"ONE"]) { UIViewController * vc = [[UIViewController alloc] init]; vc.title = @"ONE"; vc.view.backgroundColor = [UIColor redColor]; [nav pushViewController:vc animated:YES]; }else if ([shortcutItem.type isEqualToString:@"TWO"]){ UIViewController * vc = [[UIViewController alloc] init]; vc.title = @"TWO"; vc.view.backgroundColor = [UIColor grayColor]; [nav pushViewController:vc animated:YES]; }}
到这里就可以实现简单的3DTouch功能
3:具体实现:应用内部实现3DTouch 如:点击TableView 的cell 实现3DTouch功能
(1:建立一个TableView 表格,如
(2: 添加 UIViewControllerPreviewingDelegate代理
(3:实现代理方法
//UIViewControllerPreviewingDelegate//这个方法的实现就可以实现弹出预览界面的效果了-(UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{ NSIndexPath * index = [self.myTable indexPathForCell:(UITableViewCell *)[previewingContext sourceView]]; NextViewController * NVC = [[NextViewController alloc] init]; CGRect rect = CGRectMake(0, 0, previewingContext.sourceView.frame.size.width, previewingContext.sourceView.frame.size.height); previewingContext.sourceRect = rect; return NVC;}
在NextViewController中也实现相同的代理方法,实现弹出view下方的选项功能
//选项功能-(NSArray<id<UIPreviewActionItem>> *)previewActionItems{ UIPreviewAction * action0 = [UIPreviewAction actionWithTitle:@"action0" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { NSLog(@"%s, line = %d, action0 = %@, previewViewController = %@", __FUNCTION__, __LINE__, action, previewViewController); }]; UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"action1" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { NSLog(@"%s, line = %d, action1 = %@, previewViewController = %@", __FUNCTION__, __LINE__, action, previewViewController); }]; UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"action2" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { NSLog(@"%s, line = %d, action2 = %@, previewViewController = %@", __FUNCTION__, __LINE__, action, previewViewController); }]; UIPreviewAction *action3 = [UIPreviewAction actionWithTitle:@"action3" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { NSLog(@"%s, line = %d, action2 = %@, previewViewController = %@", __FUNCTION__, __LINE__, action, previewViewController); }]; //改按钮是一个数组,点击改数组时,跳到数组里里面的按钮 UIPreviewActionGroup * actionGroup = [UIPreviewActionGroup actionGroupWithTitle:@"actionGroup" style:UIPreviewActionStyleSelected actions:@[action2,action3]]; //直接返回数组 return @[action0,action1,actionGroup]; }
代码截止这里用力按压cell,接回实现弹出一级界面,效果图
接下来实现在上一个力道之上再用力按压弹出的view ,跳转至另一个视图控制器的3DTouch二级界面,实现如下的代理方法
//2:在第一个效果的基础上,在继续用力按下去,就会push预览界面了-(void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{ //获取点击cell时的索引,预览界面的原始图是cell, NSIndexPath * index = [self.myTable indexPathForCell:(UITableViewCell *)[previewingContext sourceView]]; viewControllerToCommit.title = self.dataSouce[index.row]; [self showViewController:viewControllerToCommit sender:nil]; }
效果图:
到这里3DTouch功能基本实现完成。
阅读全文
0 0
- iOS3DTouch功能实现
- 实现功能
- 翻页功能的实现
- 拖放功能的实现
- 实现分页打印功能:
- VC实现打印功能
- sql实现搜索功能
- bolg 功能 实现 畅想
- DataGrid实现tooltip功能
- DataGrid实现tooltip功能
- DataGrid部分功能实现
- 撤消功能的实现
- DataGrid实现tooltip功能
- 拖放功能的实现
- 如何实现拖曳功能
- frameset实现隐现功能
- session功能实现原理
- 抽屉功能的实现
- 图解 Android 事件分发机制
- 程序员之路:C语言typedef和struct
- 如何生成转储(dmp)文件--工具篇
- Java枚举类
- AOP面向切面编程--高级
- iOS3DTouch功能实现
- 2017年上半年学习计划
- 制保留2位小数
- H5新特性
- EXT.NET NumberField 数字输入框
- 关于iOS图形上下文环境(CGContext)的操作
- bootstrap-multiselect.js多选下拉框初始化时默认选中初始值
- Mysql与Oracel的分页查询
- ajax在ssm框架中的问题总结