iOS开发,3DTouch(swift版本)的使用
2017-06-08 00:00
495 查看
摘要: 总结一下关于3DTouch的使用,虽然网上已经有了很多的博客
从iOS9,iPhone6s问世,苹果引进了3dTouch。虽然这篇博客有点晚了,但是最近公司项目要求使用3dTouch,所以还是先写个demo,写个博客总结一下吧。
3dTouch可以使用在两个地方,一个是应用内的3dTouch,一个是应用外的3dTouch(主要是APP ICON)。
1.应用外(app icon)的3dTouch的使用。
tip:目前,每个上线之后的app,App Store都会给加上默认的3dTouch,这个3dTouch只有分享这个功能,所以你也不用自己费劲去添加这个分享的功能了。
下面开始介绍app图标如何使用3dTouch的功能。
<1>添加3dTouch需要展现的功能。
在AppDelegate的入口里面添加下面的代码。
<2>处理3DTouch的回调API。
2.应用内的3dTouch的使用。
在这里,我是采用Swift,模仿微信会话界面的3DTouch来制作Demo的。
<1>给需要添加3DTouch的视图(view)注册预览到对应的控制器,设置代理
<2>实现代理方法,为预览添加可执行的操作
谢谢观看,欢迎指正,不定时更新。
QQ:2799569272
从iOS9,iPhone6s问世,苹果引进了3dTouch。虽然这篇博客有点晚了,但是最近公司项目要求使用3dTouch,所以还是先写个demo,写个博客总结一下吧。
3dTouch可以使用在两个地方,一个是应用内的3dTouch,一个是应用外的3dTouch(主要是APP ICON)。
1.应用外(app icon)的3dTouch的使用。
tip:目前,每个上线之后的app,App Store都会给加上默认的3dTouch,这个3dTouch只有分享这个功能,所以你也不用自己费劲去添加这个分享的功能了。
下面开始介绍app图标如何使用3dTouch的功能。
<1>添加3dTouch需要展现的功能。
在AppDelegate的入口里面添加下面的代码。
/***创建应用图标上的3D touch快捷选项***/ - (void)creatShortcutItem { UIApplicationShortcutIcon *newsIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeHome]; UIApplicationShortcutItem * newsItem = [[UIApplicationShortcutItem alloc]initWithType:News localizedTitle:@"查看新闻界面" localizedSubtitle:nil icon:newsIcon userInfo:nil]; UIApplicationShortcutIcon *imageIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeLocation]; UIApplicationShortcutItem * imageItem = [[UIApplicationShortcutItem alloc]initWithType:ImageEnlarge localizedTitle:@"图片放大界面" localizedSubtitle:nil icon:imageIcon userInfo:nil]; UIApplicationShortcutIcon *smartLockIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeShuffle]; UIApplicationShortcutItem * smartLockItem = [[UIApplicationShortcutItem alloc]initWithType:SmartLock localizedTitle:@"手势解锁界面" localizedSubtitle:nil icon:smartLockIcon userInfo:nil]; /***以栈的方式进入,先进后出,newsItem在显示的界面中是最低下的一个***/ [UIApplication sharedApplication].shortcutItems = @[newsItem,imageItem,smartLockItem]; }
<2>处理3DTouch的回调API。
/***响应3DTouch的系统API***/ -(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler { [self jumpToControllerForShortcutItem:shortcutItem]; if (completionHandler) { completionHandler(YES); } } /***跳进指定的控制器***/ -(void)jumpToControllerForShortcutItem:(UIApplicationShortcutItem *)shortcutItem{ if (!shortcutItem) { return; } if([shortcutItem.type isEqualToString:News]){ /***新闻分类界面***/ NewsListViewController *newsVC=[[NewsListViewController alloc] init]; newsVC.title = @"新闻分类"; [[WTManager CurrentController] pushViewController:newsVC animated:YES]; }else if ([shortcutItem.type isEqualToString:ImageEnlarge]){ /***图片放大界面***/ EnlargeImageController *enlargeVC=[[EnlargeImageController alloc] init]; enlargeVC.title = @"图片放大"; [[WTManager CurrentController] pushViewController:enlargeVC animated:YES]; }else{ /***手势解锁界面***/ GestureLockController *vc=[[GestureLockController alloc] init]; vc.title=@"手势解锁"; [[WTManager CurrentController] pushViewController:vc animated:YES]; } }
2.应用内的3dTouch的使用。
在这里,我是采用Swift,模仿微信会话界面的3DTouch来制作Demo的。
<1>给需要添加3DTouch的视图(view)注册预览到对应的控制器,设置代理
/*** 首先,在控制器层判断当前的系统是否支持3DTouch,如果支持为他的子视图赋值 ***/ if #available(iOS 9.0, *) { if self.traitCollection.forceTouchCapability == .available { /***3DTouch可用***/ threeDTouchViewModel.superController = self }else{ /***3DTouch不可用***/ } } else { // Fallback on earlier versions }
/*** 在这里,将UITableViewCell注册UIPreview到_superController(该视图所存在的父控制器)。并遵循UIViewControllerPreviewingDelegate协议,只有iOS9支持3DTouch ***/ if _superController != nil { if #available(iOS 9.0, *) { _superController?.registerForPreviewing(with: self as UIViewControllerPreviewingDelegate, sourceView: cell!) } else { // Fallback on earlier versions } }
<2>实现代理方法,为预览添加可执行的操作
/*** 在这里要说明一下,我这里的预览跟点击进去的预览是两个不同的控制器,就为了模仿微信在预览的时候也是有标题的效果***/ /***预览(peek)***/ func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { /***获取按压的cell所在行,[previewingContext sourceView]就是按压的那个视图***/ if #available(iOS 9.0, *) { /***设定预览的界面***/ let vc = ThreeDTouchTestViewController() vc.preferredContentSize = CGSizeMake(width: 0, height: 500) /***调整不被虚化的范围,按压的那个cell不被虚化(轻轻按压时周边会被虚化,再少用力展示预览,再加力跳页至设定界面)***/ previewingContext.sourceRect = CGRectMake(x: 0, y: 0, width: KScreenWidth_Swift,height: 80) return vc } else { // Fallback on earlier versions let vc = ThreeDTouchTestViewController() return vc } } /***点击进入(pop)***/ func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { WTManager.currentController().pushViewController(ThreeDTouchTestOneViewController(), animated: true) }
/*** 这里是在预览的控制器里面添加可执行的操作***/ @available(iOS 9.0, *) override var previewActionItems: [UIPreviewActionItem]{ var items = [UIPreviewAction]() let action1 = UIPreviewAction.init(title: "收藏", style: UIPreviewActionStyle.default, handler: { (action: UIPreviewAction, previewViewController: UIViewController) in print("收藏") }) let action2 = UIPreviewAction.init(title: "喜欢", style: UIPreviewActionStyle.default, handler: { (action: UIPreviewAction, previewViewController: UIViewController) in print("喜欢") }) items.append(action1) items.append(action2) return items; }
谢谢观看,欢迎指正,不定时更新。
QQ:2799569272
相关文章推荐
- [iOS开发]使用Swift检测系统版本信息
- iOS 3D Touch开发 很良心的版本原创!
- iOS开发 3D Touch的简单使用
- iOS多线程简介 - Swift版本 2.多线程开发 -- NSOperation的简单使用
- iOS3D-Touch开发之Home Screen Quick Actions(Swift)
- iOS开发--3D Touch的基本使用
- IOS开发之 一起用Swift来玩一玩3D Touch
- iOS开发3D Touch基本开发与使用
- iOS开发--3D Touch的基本使用
- iOS开发--3D Touch使用代码实例
- iOS 3D Touch开发tableview页面内的使用
- iOS开发 3D-touch使用
- ios开发——iOS9 3D Touch 使用教程
- iOS基础网络教程-Swift版本: 2.使用UIWebView请求数据
- 使用Swift开发IOS项目、UI创建、方法调用
- IOS应用开发版本控制工具之Versions使用
- iOS开发之版本兼容一,使用#ifdef语法
- iOS开发-在Swift里使用AFNetworking方法
- iOS多线程简介 - Swift版本 3.多线程开发 -- Run Loop
- 谷歌搜索将开发iOS版本AndroidWear使用www.cw100.com