iOS开发-------3D Touch之ApplicationShortcutItem

原创 2016年02月20日 14:22:50

        自从iPhone 6s / 6s Plus 发布之后,3D Touch给了APP一种新的活力,对于大部分的果粉或者年轻人来说,应该已经很习惯这个新特征了,很多的主流APP也在第一时间适配了3D Touch,为了让自己的APP显得高大上,适配3D Touch就是必不可少的一步了,如何对3D Touch进行开发,网上也有很多的博客,楼主只是学习着应用一下。


在众多的博客中,很感谢下面的博客,楼主也很推荐大家去看一下

iOS9 3D Touch 使用教程


1、静态设置

静态设置就是在项目的Info.plist文件中设置



以上代码如下:
<key>UIApplicationShortcutItems</key>
	<array>
		<dict>
			<key>UIApplicationShortcutItemIconType</key>
			<string>UIApplicationShortcutIconTypeShare</string>
			<key>UIApplicationShortcutItemType</key>
			<string>Title1</string>
			<key>UIApplicationShortcutItemSubtitle</key>
			<string>SubTitle1</string>
			<key>UIApplicationShortcutItemTitle</key>
			<string>StateTitle1</string>
		</dict>
		<dict>
			<key>UIApplicationShortcutItemType</key>
			<string>Title2</string>
			<key>UIApplicationShortcutItemSubtitle</key>
			<string>SubTitle3</string>
			<key>UIApplicationShortcutItemTitle</key>
			<string>StateTitle2</string>
		</dict>
		<dict>
			<key>UIApplicationShortcutItemType</key>
			<string>Title3</string>
			<key>UIApplicationShortcutItemSubtitle</key>
			<string>SubTitle3</string>
			<key>UIApplicationShortcutItemTitle</key>
			<string>StateTitle3</string>
		</dict>
	</array>

效果如下:




其中有几个可以设置的键值
    //必须设置值的键
    UIApplicationShortcutItemType       //位置标识符
    UIApplicationShortcutItemTitle      //标题
    
    //可选设置值得键
    UIApplicationShortcutItemIconType   //显示图标系统类型
    UIAPPlicationShortcutItemIconFile   //显示图标的图片名
    UIAPPlicationShortcutItemUserInfo   //用户信息字典信息,自定义参数

其中UIApplicationShortcutItemIconType有如下几种默认的枚举类型
typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {
    UIApplicationShortcutIconTypeCompose,
    UIApplicationShortcutIconTypePlay,
    UIApplicationShortcutIconTypePause,
    UIApplicationShortcutIconTypeAdd,
    UIApplicationShortcutIconTypeLocation,
    UIApplicationShortcutIconTypeSearch,
    UIApplicationShortcutIconTypeShare,
    UIApplicationShortcutIconTypeProhibit       NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeContact        NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeHome           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeMarkLocation   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeFavorite       NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeLove           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeCloud          NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeInvitation     NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeConfirmation   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeMail           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeMessage        NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeDate           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeTime           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeCapturePhoto   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeCaptureVideo   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeTask           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeTaskCompleted  NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeAlarm          NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeBookmark       NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeShuffle        NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeAudio          NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeUpdate         NS_ENUM_AVAILABLE_IOS(9_1)
} NS_ENUM_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;


2、动态代码实现

代码的实现需要在方法-applocation:didFinishLaunchingWithOptions:中实现

个人习惯而言,楼主喜欢自定义一个创建方法,在上述方法中调用自定义创建方法即可
#ifdef __IPHONE_9_0 //因为这个类是iOS 9_0 之后的,所以预编译指令,在iOS 9_0 之后进行编译
/**
 *  创建3D Touch选项
 */
- (void)createShortcutItems
{
    //最简单的形式
    UIApplicationShortcutItem * item1 = [[UIApplicationShortcutItem alloc]initWithType:@"item1"
                                                                        localizedTitle:@"Item1"];
    
    //可以自定义选项
    UIApplicationShortcutIcon * icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
    UIApplicationShortcutItem * item2 = [[UIApplicationShortcutItem alloc]initWithType:@"item2"
                                                                        localizedTitle:@"Item2"
                                                                     localizedSubtitle:@"Item2"
                                                                                  icon:icon2
                                                                              userInfo:nil];
    //使用自定义的图片定义选项
    UIApplicationShortcutIcon * icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"delete"];
    UIApplicationShortcutItem * item3 = [[UIApplicationShortcutItem alloc]initWithType:@"item3"
                                                                        localizedTitle:@"Item3"
                                                                     localizedSubtitle:@"item3"
                                                                                  icon:icon3
                                                                              userInfo:nil];
    //响应到APP端
    [UIApplication sharedApplication].shortcutItems = @[item3,item2,item1];
}

#endif

在-applocation:didFinishLaunchingWithOptions:中实现
#ifdef __IPHONE_9_0
    [self createShortcutItems];
#endif

效果图如下:



响应方法:


按下后如何响应
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
    NSLog(@"shortcutType = %@",shortcutItem.type);
}




版权声明:本文为博主原创文章,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

iOS 3D Touch (UIApplicationShortcutItem、UIViewControllerPreviewing、UIPreviewAction)

苹果太贱了! 3D Touch 只能在真机上面试,模拟器没办法玩! ------------- 描述有点粗燥。。。。。有6S 在手上玩得童鞋会更加清楚,只有玩过才更加体验到。 首先 有几个要知道...
  • liwenjie0912
  • liwenjie0912
  • 2015年10月16日 15:49
  • 8841

UIApplicationShortcutItems 官方文档翻译

UIApplicationShortcutItems (数组类型)指定了app的静态  Home screen quick actions.即: UIApplicationShortcutItems...
  • soindy
  • soindy
  • 2015年11月25日 18:34
  • 1823

iOS9 3DTouch、ShortcutItem、Peek And Pop技术一览

3DTouchUITouch类里API的变化iOS9中添加的属性 altitudeAngle当笔平行于平面时,该值为0 当笔垂直于平面时,该值为Pi / 2 estimatedPropertie...
  • showhilllee
  • showhilllee
  • 2015年09月11日 18:07
  • 22037

3DTouch_ShortcutItem

3D Touch,新一代 Multi‑Touch。 iPhone 6s 推出了一种可以让你与手机进行互动的全新方式。这一次,iPhone 能够感应你按压屏幕的力度。除了轻点、轻扫、双指开合这些熟...
  • baidu_24934637
  • baidu_24934637
  • 2015年10月29日 11:21
  • 343

UIApplicationShortcutIconType

UIApplicationShortcutIconTypeCompose UIApplicationShortcutIconTypePlay ...
  • baidu_32469997
  • baidu_32469997
  • 2016年04月19日 17:51
  • 2435

3D Touch 的实现和系统分享功能

3D Touch其实就是快速进入指定app界面的一种方式。 下面和大家分享一下简单的实现 1、静态标签 静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序...
  • yishengzhiai005
  • yishengzhiai005
  • 2016年12月07日 15:30
  • 1829

iOS开发之3DTouch集成

静态添加入口标签在info.plist中添加如图所示 各项都代表的意思首先是UIApplicationShortcutItems,他是一个数组类型,数组中的每一个元素表示一个入口标签。然后是Item...
  • sinat_30162391
  • sinat_30162391
  • 2016年04月08日 13:51
  • 1712

iOS 关于3DTouch部分

3DTouch 主屏交互 Peek&Pop
  • LOLITA0164
  • LOLITA0164
  • 2018年01月04日 14:54
  • 30

IOS开发之 一起用Swift来玩一玩3D Touch

Swift 2.3 IOS 8.0 XCode 8.0 添加入口标签在这里只说下静态的好了,暂时还用不到动态的,e.g.UIApplicationShortcutItems ...
  • sbt0198
  • sbt0198
  • 2017年02月07日 14:45
  • 966

模拟器使用3D Touch功能

在模拟器上学习和测试3D Touch    3D Touch是一个很新颖的设计,可是苹果文档有言: With Xcode 7.0 you must develop on a dev...
  • jinglijun
  • jinglijun
  • 2015年12月06日 16:12
  • 3777
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发-------3D Touch之ApplicationShortcutItem
举报原因:
原因补充:

(最多只允许输入30个字)