服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS开发Quick Actions创建桌面Icon快捷方式

iOS开发Quick Actions创建桌面Icon快捷方式

2021-05-25 15:46GarveyCalvin IOS

在本文里我们给大家分享了关于iOS开发Quick Actions创建桌面Icon快捷方式的相关知识点内容,需要的读者们可以参考下。

个言

很久没发随笔了,有一年多了吧。期间也曾想继续去写随笔,但是因为各种原因而耽搁了。最近又想了一下,还是有很多东西想要写,想要分享,想要记录下来的东西。之后我也会不断写随笔,但不止于 ios 的方向,也想去体验一下新东西。在此不多说,我们开始阅读正文吧。

简介

在支持 3d touch 的设备上,quick actions 可以让用户更快,更少的操作步骤去完成他们最常做的事情,其中这么多操作可以通过主屏幕直接完成。比如用力地长按微信图标,会弹出诸如"扫一扫"和"我的二维码"等常用功能,这个我在加好友的情况下经常会用到,不是"扫"别人就是被别人"扫"。然后这是它的官方介绍,3d touch - ios - apple developer。

本文的 demo 已放到 github 上,demo 请到 garveycalvin/ios-travel 下载。

支持的设备是在 iphone 6s 和 6s plus 及后续出的 iphone 系列,系统则是从 ios 9.0 开始支持 3d touch。

info.plist 创建快捷方式

快捷方式支持在 info.plist 里直接定义,主键是uiapplicationshortcutitems,它是一个数组array。各个 key 值可以在查看information property list key reference,在这里简单地介绍一下各个 key 的作用。

 

key 作用
uiapplicationshortcutitemtype(必需) 唯一标识
uiapplicationshortcutitemtitle(必需) 显示的标题
uiapplicationshortcutitemsubtitle(可选) 显示的副标题
uiapplicationshortcutitemicontype(可选) 使用系统的图标
uiapplicationshortcutitemiconfile(可选) 使用项目的图标
uiapplicationshortcutitemuserinfo(可选) 附加的信息

 

以下是一个详细的例子,上述的 key 除了 uiapplicationshortcutitemuserinfo 外,其它都实现了。

iOS开发Quick Actions创建桌面Icon快捷方式

现在我们来看看运行效果,值得一提的是,图标分别在上半屏和下半屏的情况下,显示的排序是会不同的,具体运行效果如下所示。

图标在上半屏

iOS开发Quick Actions创建桌面Icon快捷方式

图标在下半屏

iOS开发Quick Actions创建桌面Icon快捷方式

判断用户点击了哪个快捷方式

通过在 appdelegate.m 文件中实现 uiapplicationdelegate 的代理方法

application:performactionforshortcutitem:completionhandler:,可以得知用户是从哪个快捷方式进来的,具体代码如下。

?
1
2
3
4
5
6
7
8
9
10
11
- (void)application:(uiapplication *)application performactionforshortcutitem:(uiapplicationshortcutitem *)shortcutitem completionhandler:(void (^)(bool))completionhandler api_available(ios(9.0)) {
 nslog(@"%s", __function__);
 
 if ([shortcutitem.type isequaltostring:@"search"]) {
  nslog(@"用户从快捷方式“搜索”进来的");
 } else if ([shortcutitem.type isequaltostring:@"list"]) {
  nslog(@"用户从快捷方式“榜单”进来的");
 } else if ([shortcutitem.type isequaltostring:@"public"]) {
  nslog(@"用户从快捷方式“一键发布”进来的");
 }
}

代码创建快捷方式

快捷方式也支持代码创建,每一个 uiapplicationshortcutitem 就是一个快捷方式,一般在 appdelegate.m 文件中实现方法 application:didfinishlaunchingwithoptions: 里编写实现代码,代码比较易懂,这里就不再说明了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions {
 nslog(@"%s", __function__);
 
 if (@available(ios 9.0, *)) {
  uiapplicationshortcuticon *searchicon = [uiapplicationshortcuticon iconwithtype:uiapplicationshortcuticontypesearch];
  uiapplicationshortcutitem *search = [[uiapplicationshortcutitem alloc] initwithtype:@"search" localizedtitle:@"搜索" localizedsubtitle:nil icon:searchicon userinfo:nil];
  
  uiapplicationshortcuticon *publicicon = [uiapplicationshortcuticon iconwithtemplateimagename:@"upload"];
  uiapplicationshortcutitem *public = [[uiapplicationshortcutitem alloc] initwithtype:@"public" localizedtitle:@"一键发布" localizedsubtitle:nil icon:publicicon userinfo:nil];
  
  uiapplicationshortcutitem *list = [[uiapplicationshortcutitem alloc] initwithtype:@"list" localizedtitle:@"榜单" localizedsubtitle:@"全区排行" icon:nil userinfo:nil];
  
  application.shortcutitems = @[list, public, search];
 }
 
 return yes;
}

资料

本文的 demo 已放到 github 上,demo 请到 garveycalvin/ios-travel 下载。

环境

xcode: version 10.1 (10b61)

测试机型:iphone xs max

测试系统:ios 12.1

总结

无论是在 info.plist 或 代码 创建 quick actions 都比较简单,没什么很复杂的逻辑,学起来很容易。

quick actions 的使用情况还是比较多的,就我而言,我经常会用支付宝和微信放出来的"扫一扫",支付宝的"乘车码"等等。

3d touch 的应用范围不止这些,还有 peek and pop 和 pressure sensitivity,在以后或许会补上这系列的文章。

原文链接:https://www.cnblogs.com/GarveyCalvin/p/3d-touch-series-quick-action.html

延伸 · 阅读

精彩推荐
  • IOSiOS实现控制屏幕常亮不变暗的方法示例

    iOS实现控制屏幕常亮不变暗的方法示例

    最近在工作中遇到了要将iOS屏幕保持常亮的需求,所以下面这篇文章主要给大家介绍了关于利用iOS如何实现控制屏幕常亮不变暗的方法,文中给出了详细的...

    随风13332021-04-02
  • IOSiOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)

    iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和

    这篇文章主要介绍了iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)的相关资料,需要的朋友可以参考下...

    CodingFire13652021-02-26
  • IOSiOS中UILabel实现长按复制功能实例代码

    iOS中UILabel实现长按复制功能实例代码

    在iOS开发过程中,有时候会用到UILabel展示的内容,那么就设计到点击UILabel复制它上面展示的内容的功能,也就是Label长按复制功能,下面这篇文章主要给大...

    devilx12792021-04-02
  • IOSiOS开发之视图切换

    iOS开发之视图切换

    在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单。在iOS开发中常用的视图切换有三种,今天我们将...

    执着丶执念5282021-01-16
  • IOSiOS中MD5加密算法的介绍和使用

    iOS中MD5加密算法的介绍和使用

    MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。对输入信息生成唯一的128位散列值(32个字符)。这篇文...

    LYSNote5432021-02-04
  • IOS详解iOS中多个网络请求的同步问题总结

    详解iOS中多个网络请求的同步问题总结

    这篇文章主要介绍了详解iOS中多个网络请求的同步问题总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    liang199111312021-03-15
  • IOSiOS开发技巧之状态栏字体颜色的设置方法

    iOS开发技巧之状态栏字体颜色的设置方法

    有时候我们需要根据不同的背景修改状态栏字体的颜色,下面这篇文章主要给大家介绍了关于iOS开发技巧之状态栏字体颜色的设置方法,文中通过示例代码...

    梦想家-mxj8922021-05-10
  • IOSiOS自定义UICollectionViewFlowLayout实现图片浏览效果

    iOS自定义UICollectionViewFlowLayout实现图片浏览效果

    这篇文章主要介绍了iOS自定义UICollectionViewFlowLayout实现图片浏览效果的相关资料,需要的朋友可以参考下...

    jiangamh8882021-01-11