iOS9系列专题一——3D Touch(二)

简介: iOS9系列专题一——3D Touch

五、Home Screen Quick Action使用与相关api详解


   iOS9为我们提供了两种屏幕标签,分别是静态标签和动态标签。


1、静态标签


   静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。


我们先来看静态标签的配置:


首先,在info.plist文件中添加如下键值(我在测试的时候,系统并没有提示,只能手打上去):


image.png


先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:


必填项(下面两个键值是必须设置的):


UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串


UIApplicationShortcutItemTitle 这个键值设置标签的标题


选填项(下面这些键值不是必须设置的):


UIApplicationShortcutItemSubtitle 设置标签的副标题


UIApplicationShortcutItemIconType 设置标签Icon类型


UIApplicationShortcutItemIconFile  设置标签的Icon文件


UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)


我们如上截图设置后,运行程序,用我们前面的方法进行测试,效果如下:


image.png


2、动态标签


动态标签是我们在程序中,通过代码添加的,与之相关的类,主要有三个:


UIApplicationShortcutItem 创建3DTouch标签的类


UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类


UIApplicationShortcutIcon 创建标签中图片Icon的类


因为这些类是iOS9中新增加的类,所以其api的复杂程度并不大,下面我们来对其中方法与属性进行简要讲解:


@interface UIApplicationShortcutItem : NSObject <NSCopying, NSMutableCopying>

//下面是两个初始化方法 通过设置type,title等属性来创建一个标签,这里的icon是UIApplicationShortcutIcon对象,我们后面再说

- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle;

//下面这是一些只读的属性,获取相应的属性值

@property (nonatomic, copy, readonly) NSString *type;

@property (nonatomic, copy, readonly) NSString *localizedTitle;

@property (nullable, nonatomic, copy, readonly) NSString *localizedSubtitle;

@property (nullable, nonatomic, copy, readonly) UIApplicationShortcutIcon *icon;

@property (nullable, nonatomic, copy, readonly) NSDictionary<NSString *, id <NSSecureCoding>> *userInfo;

//这个类继承于 UIApplicationShortcutItem,创建的标签可变

@interface UIMutableApplicationShortcutItem : UIApplicationShortcutItem

@property (nonatomic, copy) NSString *type;

@property (nonatomic, copy) NSString *localizedTitle;

@property (nullable, nonatomic, copy) NSString *localizedSubtitle;

@property (nullable, nonatomic, copy) UIApplicationShortcutIcon *icon;

@property (nullable, nonatomic, copy) NSDictionary<NSString *, id <NSSecureCoding>> *userInfo;


@end

//这个类创建标签中的icon

@interface UIApplicationShortcutIcon : NSObject <NSCopying>

//创建系统风格的icon

+ (instancetype)iconWithType:(UIApplicationShortcutIconType)type;

//创建自定义的图片icon

+ (instancetype)iconWithTemplateImageName:(NSString *)templateImageName;

@end

创建好标签后,将其添加如application的hortcutItems数组中即可,示例如下:


- (void)viewDidLoad {

   [super viewDidLoad];

   // Do any additional setup after loading the view, typically from a nib.

   //创建

   UIApplicationShortcutItem * item = [[UIApplicationShortcutItem alloc]initWithType:@"two" localizedTitle:@"第二个标签" localizedSubtitle:@"看我哦" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay] userInfo:nil];

   添加

   [UIApplication sharedApplication].shortcutItems = @[item];

}

效果如下:


image.png


这里,将系统风格icon的枚举列举如下:


typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {

   UIApplicationShortcutIconTypeCompose,//编辑的图标

   UIApplicationShortcutIconTypePlay,//播放图标

   UIApplicationShortcutIconTypePause,//暂停图标

   UIApplicationShortcutIconTypeAdd,//添加图标

   UIApplicationShortcutIconTypeLocation,//定位图标

   UIApplicationShortcutIconTypeSearch,//搜索图标

   UIApplicationShortcutIconTypeShare//分享图标

} NS_ENUM_AVAILABLE_IOS(9_0);

3、响应标签的行为


类似推送,当我们点击标签进入应用程序时,也可以进行一些操作,我们可以看到,在applocation中增加了这样一个方法:



- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0);


当我们通过标签进入app时,就会在appdelegate中调用这样一个回调,我们可以获取shortcutItem的信息进行相关逻辑操作。


这里有一点需要注意:我们在app的入口函数:



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;


也需要进行一下判断,在launchOptions中有UIApplicationLaunchOptionsShortcutItemKey这样一个键,通过它,我们可以区别是否是从标签进入的app,如果是则处理结束逻辑后,返回NO,防止处理逻辑被反复回调。


几点注意:


1、快捷标签最多可以创建四个,包括静态的和动态的。


2、每个标签的题目和icon最多两行,多出的会用...省略


六、结语


       关于3DTouch在UIView中的预览功能和UITouch中新增加的力度属性的应用,因为不好演示,这里就不再总结,大家可以通过头文件中相应的类和属性来了解他们,最后,如有疏漏和错误之处,欢迎指正。


 

目录
相关文章
|
开发工具 iOS开发 git
iOS9系列专题一——3D Touch(一)
iOS9系列专题一——3D Touch
179 0
iOS9系列专题一——3D Touch(一)
|
vr&ar iOS开发
【Xamarin.iOS】使用UrhoSharp将3D模型带入增强现实生活
UrhoSharp将3D引入各种平台,并使用其自己的二进制mdl格式的模型文件。 3D模型有很多来源,包括cgtrader和TurboSquid,以及FBX,OBJ,DAE和BLEND等格式。
1845 0
|
iOS开发
iOS开发--3D Touch的基本使用
1.桌面快捷菜单项 效果如图: 1.桌面快捷菜单项 效果如图: 1.桌面快捷菜单项 效果如图: 桌面快捷菜单 点击之后的效果如图: 点击桌面快捷菜单的效果 接下来看下具体实现:1).在-application:didFinishLaunchingWithOptions:方法中用-setShortcutItems:方法来添加快捷菜单项。
|
iOS开发
iOS - 3DTouch 3D 触摸
1、3DTouch 简介 3DTouch 是 iOS9 + 系统下,在 iPhone6s(iPhone6s Plus)+ 手机上才能够使用的功能。 1.1 3DTouch 基本类型 1、主屏幕快速选项(Home Screen Quick Action) 通过主屏幕的应用图标,通过 3D 手势呼出一个菜单,在主屏幕上的应用 Icon 处,直接进入应用的相应功能模块。
955 0
|
安全 API iOS开发
iOS 新特性分列式 之 iOS 9.x - 主要内容:苹果笔 API 引入、3D Touch、iPad 多任务加强、应用瘦身、应用传输安全、Swift 加强
iOS 新特性分列式 之 iOS 9.x - 主要内容:苹果笔 API 引入、3D Touch、iPad 多任务加强、应用瘦身、应用传输安全、Swift 加强 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
1238 0
|
1月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
6天前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
88 66