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

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

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

1. 静态文件实现:

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

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的效果。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容