3D Touch 的实现和系统分享功能
来源:互联网 发布:门户网站源码下载 编辑:程序博客网 时间:2024/06/05 02:09
3D Touch其实就是快速进入指定app界面的一种方式。
下面和大家分享一下简单的实现
1、静态标签
静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。
我们先来看静态标签的配置:
首先,在info.plist文件中添加如下键值(我在测试的时候,系统并没有提示,只能手打上去):
先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:
必填项(下面两个键值是必须设置的):
UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle 这个键值设置标签的标题
选填项(下面这些键值不是必须设置的) :
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)
我们如上截图设置后,运行程序,用我们前面的方法进行测试,效果如下:
2、动态标签
动态标签是我们在程序中,通过代码添加的,与之相关的类,主要有三个:
UIApplicationShortcutItem 创建3DTouch标签的类
UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类
UIApplicationShortcutIcon 创建标签中图片Icon的类
在AppDelegate.m文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {CGFloat currentDeviceVersionFloat = [[[UIDevice currentDevice] systemVersion] floatValue];//判断版本号,3D Touch是从iOS9.0后开始使用 if (currentDeviceVersionFloat >= 9.0) { UIApplicationShortcutIcon *iconFitness = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片1"]; //菜单文字 UIMutableApplicationShortcutItem *itemFitness = [[UIMutableApplicationShortcutItem alloc] initWithType:@"1" localizedTitle:@"标题一"]; //绑定信息到指定菜单 itemFitness.icon = iconFitness; // 菜单图标 UIApplicationShortcutIcon *iconRun = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片二"]; //菜单文字 UIMutableApplicationShortcutItem *itemRun = [[UIMutableApplicationShortcutItem alloc] initWithType:@"2" localizedTitle:@"标题二"]; //绑定信息到指定菜单 itemRun.icon = iconRun; //绑定到App icon application.shortcutItems = @[itemFitness,itemRun]; }}
响应事件如下
- (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{ if ([shortcutItem.type isEqualToString:@"1"]) {//如果有导航栏参考下面注释部分 UINavigationController *myNavi = self.window.rootViewController.childViewControllers[0];// _tabBar.selectedIndex = 0; UIViewController * picker1 = [[UIViewController alloc]init];//进入窗口的初始化//利用NSUserDefaults 的标识,来防止重复初始化VC // if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d"]) { // [myNavi popViewControllerAnimated:NO]; // [myNavi pushViewController:_picker1 animated:YES ]; // }else{ [myNavi pushViewController:picker1 animated:YES ]; // } } if ([shortcutItem.type isEqualToString:@"2"]) { / / UINavigationController *myNavi = self.window.rootViewController.childViewControllers[1]; // _tabBar.selectedIndex = 1; UIViewController *vc = [[UIViewController1 alloc]init];//进入窗口的初始化 // if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d1"]) { // [myNavi popViewControllerAnimated:NO]; // [myNavi pushViewController:_LJHVC animated:YES ]; // }else{ [myNavi pushViewController:vc animated:YES ]; // } }}
如果你在为系统“分享”犯愁的话,我可以悄悄的告诉你,这个是上架后系统自带的系统分享功能(我搞了一天多0.0)
原文链接:http://www.jianshu.com/p/d6c913c7973a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- 3D Touch 的实现和系统分享功能
- ios 3D Touch功能的实现
- ios 3D Touch功能的实现
- 3D Touch 的实现:
- 3D touch功能
- 3D touch功能的封装
- iOS 3D Touch功能
- iOS 3D Touch功能
- iOS 3D Touch功能
- SBShortcutMenuSimulator实现模拟器上测试 3D Touch 功能
- iOS9上实现3D Touch功能之快速启动
- android 简单模仿IOS的3D Touch功能
- Android系统中分享功能的实现
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- Android设计模式之单例模式
- Unity3D 得到 主窗口句柄
- 利用Android Studio、MAT对Android进行内存泄漏检测
- Java实现多线程的方法-3种
- C#版本的MyBatis( C#解析XML文件并且获取SQL语句)
- 3D Touch 的实现和系统分享功能
- springmvc4 mybatis 整合 框架源码 SSM
- 《活着》----读书笔记
- 语法错误 : 缺少“;”(在“类型”的前面)”—— C语言标准
- 报错:”Gradle error : Write access is allowed from event dispatch thread only in android studio
- 一段Java程序的生命史
- 别总抱怨孩子成绩差,其真正根源在这儿
- freeline加速编译
- 关于环信在自定义(扩展)文本消息样式的问题