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);
}




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

UIApplicationShortcutItems 官方文档翻译

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

iOS 3D Touch (UIApplicationShortcutItem、UIViewControllerPreviewing、UIPreviewAction)

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

iOS系统3DTouch全解析

概述 iOS10系统登录中国,在系统中对3D Touch的使用需求更频繁,所以对iOS9中便引入的3D Touch功能做一些了解是很有必要的 在日常开发中,我们经常需要使用3D Touch...
  • xiaobo0134
  • xiaobo0134
  • 2016-12-13 16:50:40
  • 519

UIApplicationShortcutIconType

3D touch 的自带图标
  • SHJSir
  • SHJSir
  • 2017-04-08 14:01:29
  • 915

iOS推送、3D touch、分享等进入APP的不同跳转方式

[[AccountManager sharedInstance] changeRootViewControllerWithHome]; //改变rootviewController为主页面(我这里为t...
  • Yj_sail
  • Yj_sail
  • 2016-07-01 11:56:13
  • 3253

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

自从iPhone 6s / 6s Plus 发布之后,3D Touch给了APP一种新的活力,对于大部分的果粉或者年轻人来说,应该已经很习惯这个新特征了,很多的主流APP也在第一时间适配了3D Tou...
  • RunIntoLove
  • RunIntoLove
  • 2016-02-20 14:22:50
  • 1593

iOS开发 -3Dtouch demo

3D touch 的开发demo! 1 静态3Dtouch 在info.plist中配置 &lt;key&gt;<em>UIApplicationShortcutItem</em>s&lt;/key&gt; &lt;array&gt; &lt;dict&gt; &lt;key&gt;<em>UIApplicationShortcutItem</em>Type&lt;/key&gt;...
  • 2018年04月17日 00:00

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

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

3DTouch_ShortcutItem

3D Touch,新一代 Multi‑Touch。 iPhone 6s 推出了一种可以让你与手机进行互动的全新方式。这一次,iPhone 能够感应你按压屏幕的力度。除了轻点、轻扫、双指开合这些熟...
  • baidu_24934637
  • baidu_24934637
  • 2015-10-29 11:21:04
  • 357
收藏助手
不良信息举报
您举报文章:iOS开发-------3D Touch之ApplicationShortcutItem
举报原因:
原因补充:

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