概述
众所周知,苹果公司每年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了,如果需要请点击下载代码
下载代码
最后
以上就是慈祥发箍为你收集整理的3DTouch的分享的全部内容,希望文章能够帮你解决3DTouch的分享所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复