iOS APP添加主屏幕3DTouch快捷操作

苹果在发布iPhone 6s时推出的新的手势操作,在今年的iPhone XR上居然被阉割,某种程度上也说明这个功能并没有那么受欢迎。一般使用最多的场景就是桌面上按压图标呼出快捷操作,这里我们来说一下怎么实现这个功能

实现方式有两种,静态文件设置和动态代码实现

1. 静态文件实现:

这个静态文件指的就是我们非常熟悉的Info.plist文件了,我们通过在文件中添加相关属性实现功能

iOS APP添加主屏幕3DTouch快捷操作_第1张图片
image.png

添加row UIApplicationShortcutItems,类型为 Array,然后需要几个快捷操作就添加几个item,类型为 Dictionary,item的属性有:

UIApplicationShortcutItemType 相当于item的id,我们用来识别触发的操作是哪个,必填
UIApplicationShortcutItemUserInfo信息  
UIApplicationShortcutItemIconFile图标名称  
UIApplicationShortcutItemIconType图标类型  
UIApplicationShortcutItemTitle标题   必填
UIApplicationShortcutItemSubTitle副标题  

userinfo类型为Dictionary,可以放一些点击回调的参数,其他的都为String类型。
IconType可以设置一些系统默认的图标,类如分享、邮件、拍照等等,你也可以用IconFile来设置自己的图片文件来充当图标,图片必须是正方形、单色并且尺寸是35*35像素的图片。

2. 动态代码实现:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        let item1 = UIApplicationShortcutItem.init(type: "item1", localizedTitle: "no.1", localizedSubtitle: nil, icon: UIApplicationShortcutIcon.init(type: .location) , userInfo: nil)
        let item2 = UIApplicationShortcutItem.init(type: "item2", localizedTitle: "no.2", localizedSubtitle: nil, icon: UIApplicationShortcutIcon.init(type: .share) , userInfo: nil)
        let item3 = UIApplicationShortcutItem.init(type: "item3", localizedTitle: "no.3", localizedSubtitle: nil, icon: UIApplicationShortcutIcon.init(type: .mail) , userInfo: nil)
        application.shortcutItems = [item1, item2, item3]
        
        return true
    }

我们在application didFinishLaunchingWithOptions方法里设置application.shortcutItems,想要几个操作就初始化几个UIApplicationShortcutItem,item的几个属性我们上面已经介绍过了,和设置文件时一样。

3. 点击快捷操作进入APP:

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
        
        if shortcutItem.type == "scan" {
            //相应操作
        }
}

我们在application performActionFor shortcutItem方法里处理快捷操作的点击,根据shortcutItem.type来判断对应的点击。

PS:自定义的shortcutItem最多为四个,设置超过四个也只显示前四个,关于默认的分享app那个,app上架后系统会自动添加的,我们调试的时候不会显示,不用自己来实现,所以加上自定义的四个,你看的app用力按最多显示5个快捷操作

image.png

像支付宝这种用力按压出来的效果,其实是 widget,是用 Today Extension实现的小组件,上面的“分享支付宝”才是系统自动添加的ShortcutItem,下次有时间我来说一下这个组件怎么实现,这里不用纠结,这就不是shortcutItem的效果。

欢迎更正错误和交流,回复评论和私信皆可

你可能感兴趣的:(iOS APP添加主屏幕3DTouch快捷操作)