桌面3D - Touch
快捷静态操作(Quick actions)
需要在 info.plist
中配置
1 | <key>UIApplicationShortcutItems</key> |
关于几个必须要填写的项:
- UIApplicationShortcutItemTitle: 表示要显示的标题。展示在你的quick action菜单中的action标题。如果标题一行无法显示并且你没有指定子标题那么它将显示两行。可以使用本地化(localised)。
- UIApplicationShortcutItemType: 作为UIApplicationShortcutItem的一部分发送给你的应用。可以依据不同的shortcut类型用于执行你的actions。命名规则为: com.公司名.app名.图标作用名
关于选填的项:
- UIApplicationShortcutItemIconType: 定义内置图标类型的字符串,可选类型列表可以查询这里
- UIApplicationShortcutItemSubtitle: 用户展示你的actions的子标题的字符串。它将显示在你的quick actions标题的下方。可以本地化。
- UIApplicationShortcutItemIconFile:一个指定Assets Catalog或者Bundle中的字符串。如果指定了此键,则系统会忽略UIApplicationShortcutItemIconType
- UIApplicationShortcutItemUserInfo:一个字典,包含你想要解析的其他信息。
第二步
在入口类文件(appDelegate)中
1 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { |
还要实现另一个方法
1 | //MARK: - 3D-Touch |
由于代码的冗余 需要定义一个私有的方法 可以根据localizedTitle
或者 type
来区别点击的是哪个。
1 | private func quickActionWithShortcutItem(shortcutItem: UIApplicationShortcutItem){ |
到这里完全设置好了桌面图标的3D - Touch。 由于最近系统升级到了iOS10 桌面icon的3D - Touch 新增了widget。接下来就来时适配iOS10。
Extention
(更多信息移步到这里)(喵神博客)
Extensions不是独立的应用程序。Extensions必须依赖于一个host app,叫作宿主APP,同时他们的生命周期相互独立,并且可以互相触发事件。一个宿主APP可以包含多个Extensions。本篇文章主要是 Today Extention。创建方法 File->New->Target
工程中会多出这些文件
在MainInterface.storyboard中我们可以定制UI。
当我们想纯代码构建UI时,在上图显示的Info.plist中NSExtension需要将NSExtensionMainStoryboard删掉,解除与storyboard的关联
例子中用的storyboard构建UI。 当我们需要与APP通信时。需要用到 URL Shchemes。
首先给label添加手势
1 | widgetLabel.addGestureRecognizer(UITapGestureRecognizer.init(target: self |
1 | @objc private func widgetLabelAction() -> Void { |
设置URL Schemes
运行程序
我们也可以在widget中添加自己的APP显示信息了