iOS开发之3D Touch
2015-10-20 20:23
381 查看
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文件中添加如下字段(如下图)
第二种是动态方式创建
files and as described in iOS
Human Interface Guidelines.)
完成之上操作后,你便可以运行你的Demo去尝试一下3DTouch了。
相应的,我们可以在AppDelegate中实现如下方法来实现不同的效果
二,在应用内部实现3D Touch功能
当我们使用短信和微信、新浪微博等应用时,我们发现其应用内部也有 3D Touch 功能,效果如如下
而且这时候如果我们轻轻地上推,还会出现一些快捷操作,如下图
实现该功能并不难。当前类需要遵守协议:UIViewControllerPreviewingDelegate
接下来我们为每个表格的cell添加3dtouch
接下来便是实现协议中的方法
上面步骤实现后,我们会发现点击屏幕任意地方就会看到SecViewController的缩略图了,但是向上滑并没有上面短信界面的快捷回复,实现这个功能我们需要在SecViewcontroller中实现- (NSArray<id<UIPreviewActionItem>>
*)previewActionItems; 这个方法,如下
到这里基础的3D Touch功能便实现了。
开发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功能便实现了。
相关文章推荐
- iOS图形绘制方法汇总及图片处理
- iOS_AutoLayout自动布局
- IOS 基于APNS消息推送原理与实现
- iOS中的单例
- iOS9开发--(Content Blocker)Safari广告拦截详解
- iOS内存管理---block机制详解
- IOS开发证书配置问题总结
- IOS引用计数的小细节
- Xcode6下导入iOS7模拟器
- 蓝懿iOS 技术内容和心得 10。20
- iOS开发3-使用DOM(GData)解析XML数据
- iOS 字符串常用编码互相转换
- iOS开发2-使用SAX解析XML数据
- iOS 响应者链Responder Chain浅析
- iOS中生成随机数
- iOS开发1-使用NSJSONSerialization解析JSON数据
- IOS学习之 消息推送
- iOS -实现imageView中的button响应点击事件的方法
- iOS -实现imageView中的button响应点击事件的方法
- BIOS+MBR+chameleon 黑苹果安装教程 10.10.5 Yosemite