1.前言
随着6s的到来,3dtouch被各大热门app迅速普及,博主亲自体验后,发现使用便捷性大幅提高,随后自己照着文档,写了个demo出来,分享给大家,希望能对有需要的朋友提供有一些帮助。
2.如何使用3d touch?
2.1.主界面重按app图标,弹出touch菜单
在appledelegate文件中的程序入口处配置:
didfinishlaunchingwithoptions
//给app图标添加3d touch菜单 //拍照 //菜单图标 uiapplicationshortcuticon *iconcamera = [uiapplicationshortcuticon iconwithtype:uiapplicationshortcuticontypeadd]; //菜单文字 uimutableapplicationshortcutitem *itemcamera = [[uimutableapplicationshortcutitem alloc] initwithtype:@"1" localizedtitle:@"拍照"]; //绑定信息到指定菜单 itemcamera.icon = iconcamera; //相册 //菜单图标 uiapplicationshortcuticon *iconphotolibrary = [uiapplicationshortcuticon iconwithtype:uiapplicationshortcuticontypesearch]; //菜单文字 uimutableapplicationshortcutitem *itemphotolibrary = [[uimutableapplicationshortcutitem alloc] initwithtype:@"2" localizedtitle:@"相册"]; //绑定信息到指定菜单 itemphotolibrary.icon = iconphotolibrary; //绑定到app icon application.shortcutitems = @[itemcamera,itemphotolibrary];
弹出菜单,我们需要让用户点击后跳转指定页面
这里我们会用到appdelegate里新增加的一个方法
- (void)application:(uiapplication *)application performactionforshortcutitem:(nonnull uiapplicationshortcutitem *)shortcutitem completionhandler:(nonnull void (^)(bool))completionhandler;
让后我们需要在这个方法里做跳转的操作
//照相type if ([shortcutitem.type isequaltostring:@"1"]) { uiimagepickercontroller *picker = [[uiimagepickercontroller alloc] init];//初始化 picker.allowsediting = yes;//设置可编辑 picker.sourcetype = uiimagepickercontrollersourcetypecamera; [self.window.rootviewcontroller presentviewcontroller:picker animated:yes completion:nil];//进入照相界面 } //相册type if ([shortcutitem.type isequaltostring:@"2"]) { uiimagepickercontroller *picker = [[uiimagepickercontroller alloc] init];//初始化 picker.allowsediting = yes;//设置可编辑 picker.sourcetype = uiimagepickercontrollersourcetypephotolibrary; [self.window.rootviewcontroller presentviewcontroller:picker animated:yes completion:nil];//进入图片库
点击后分别会进入相机和相册
2.2. 3dtouch轻按预览功能,预览时底部菜单的添加
首先我们要把轻按预览和长按手势区分开来,这里要在初始化时做一个基本的检测。
nterface viewcontroller () <uiviewcontrollerpreviewingdelegate> { uilongpressgesturerecognizer *_longpress; } @end @implementation viewcontroller - (void)viewdidload { [super viewdidload]; uilongpressgesturerecognizer *longpressgr = [[uilongpressgesturerecognizer alloc] initwithtarget:self action:@selector(longpresstodo)]; _longpress = longpressgr; } //检测页面是否处于3dtouch - (void)check3dtouch{ if (self.traitcollection.forcetouchcapability == uiforcetouchcapabilityavailable) { [self registerforpreviewingwithdelegate:self sourceview:self.view]; nslog(@"3d touch 开启"); //长按停止 _longpress.enabled = no; }else{ _longpress.enabled = yes; } } - (void)viewwillappear:(bool)animated{ [self check3dtouch]; }
然后我们需要实现 uiviewcontrollerpreviewingdelegate的协议
@interface viewcontroller () <uiviewcontrollerpreviewingdelegate>
//然后实现代理方法 - (uiviewcontroller *)previewingcontext:(id<uiviewcontrollerpreviewing>)previewingcontext viewcontrollerforlocation:(cgpoint)location; #pragma mark >> 3d touch 代理方法 //轻按进入浮动预览页面 - (uiviewcontroller *)previewingcontext:(id<uiviewcontrollerpreviewing>)previewingcontext viewcontrollerforlocation:(cgpoint)location{ //注意这里我因为测试,没做具体的位置处理,如果需要定位到具体的图片cell位置的话,可以用location通过tableview的convertpoint来取到指定cell aspreviewviewcontroller *vc = [[aspreviewviewcontroller alloc] init]; vc.view.frame = self.view.frame; uiimageview *er = [[uiimageview alloc] initwithimage:[uiimage imagenamed:@"123.png"]]; vc.view = er; return vc; }
完成后可以实现基本的预览效果:
最后我们加上一个
预览时下滑底部菜单的添加
在我们刚刚创建的预览控制器aspreviewviewcontroller里实现 uiviewcontrollerpreviewingdelegate的协议
然后重写它的代理方法
- (nsarray<id<uipreviewactionitem>> *)previewactionitems; //预览页面 底部action items - (nsarray<id<uipreviewactionitem>> *)previewactionitems{ uipreviewaction *p1 =[uipreviewaction actionwithtitle:@"分享" style:uipreviewactionstyledefault handler:^(uipreviewaction * _nonnull action, uiviewcontroller * _nonnull previewviewcontroller) { nslog(@"点击了分享"); }]; uipreviewaction *p2 =[uipreviewaction actionwithtitle:@"收藏" style:uipreviewactionstyledefault handler:^(uipreviewaction * _nonnull action, uiviewcontroller * _nonnull previewviewcontroller) { nslog(@"点击了收藏"); }]; nsarray *actions = @[p1,p2]; return actions; }
以上所述是小编给大家介绍的ios 指压即达集成ios9里的3d touch的方法,希望对大家有所帮助
如对本文有疑问, 点击进行留言回复!!
iOS14Beta3续航怎么样 iOS14Beta3续航能力介绍
iOS14Beta3稳定性怎么样 iOS14Beta3升级建议介绍
uniapp编写H5界面放入IOS全面屏原生导航栏盖住H5界面
游戏APP解决方案,8月1日起下架无版号ios手游的出路在哪?
网友评论