美文网首页
3D touch 之 Home Screen Quick Act

3D touch 之 Home Screen Quick Act

作者: sherry155 | 来源:发表于2016-10-28 17:28 被阅读34次

    如何让 iPhone 模拟器 支持3D touch

    接下来就是如何将装逼进行到底

    如何创建 Quick Action  也就是重按 app 图标时弹出的那几个菜单

    imooc 免费 IT 教育

    正如上面的图中有两个Action Item 【历史记录】【查看下载】

    每个 Action 都是使用 UIApplicationShortcutItem 这个对象进行创建的

    下面列出每一个 UIApplicationShortcutItem 中能够包含的信息:

    名称描述必须

    UIApplicationShortcutItemTypeitem事件的唯一标示、通过茨表示可以确定点击的那个itemYES

    UIApplicationShortcutItemTitleitem的标题、subtitle为空时、title过长可能会换行显示YES

    UIApplicationShortcutItemSubtitleitem的子标题、在title下方以小文字显示NO

    UIApplicationShortcutItemIconTypeitem图标枚举、系统的样式NO

    UIApplicationShortcutItemIconFile自定义item图标、大小为 35*35 的单一颜色样式呈现、                                        如果设置此项 UIApplicationShortcutItemIconType 将会失效NO

    UIApplicationShortcutItemUserInfo以字典的形式 key : valueNO

    *  Home Screen Quick Action 的创建 有两种方式

    1.静态2.动态

    * 需要注意的是每个App最多能够显示4个ActionItem,4个ActionItem,4个ActionItem重要的事情要说 三 遍 最多4个ActionItem支持【静态方式】和【动态方式】同时存在、并不会冲突如果你比较够叛逆、够任性、同时使用了【静态】和【动态】方式那么你给 UIApplication 的 shortcutItems 这个数组赋值的时候并不会覆盖、并不会覆盖、并不会覆盖我又说了三遍... 见谅

    静态方式

    静态创建的方式是在项目的 Info.plist 文件中添加数组即可

    UIApplicationShortcutItemsUIApplicationShortcutItemTypedownloadUIApplicationShortcutItemTitle历史记录UIApplicationShortcutItemSubtitleUIApplicationShortcutItemIconFileshortcut_history.pngUIApplicationShortcutItemUserInfo******UIApplicationShortcutItemTypedownloadUIApplicationShortcutItemTitle查看下载UIApplicationShortcutItemSubtitleUIApplicationShortcutItemIconFileshortcut_download.pngUIApplicationShortcutItemUserInfo******

    动态方式

    动态方式需要在 application didFinishLachingWithOption: 方法中实现

    - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {if(self.forceTouchCapability==UIForceTouchCapabilityAvailable) {// 为了更直观的阅读代码 这里分成两行写UIApplicationShortcutIcon*historyIcon;          historyIcon = [UIApplicationShortcutIconiconWithTemplateImageName:@"shortcut_history"];UIApplicationShortcutItem*historyItem = [[UIApplicationShortcutItemalloc]                                                    initWithType:@"history"localizedTitle:@"历史记录"localizedSubtitle:nilicon:historyIcon                                                    userInfo:nil];// 为了更直观的阅读代码 这里分成两行写UIApplicationShortcutIcon*downloadIcom;          downloadIcom = [UIApplicationShortcutIconiconWithTemplateImageName:@"shortcut_download"];UIApplicationShortcutItem*downloadItem = [[UIApplicationShortcutItemalloc]                                                    initWithType:@"download"localizedTitle:@"查看下载"localizedSubtitle:nilicon:downloadIcom                                                    userInfo:nil];          application.shortcutItems= @[historyItem, downloadItem];    }}

    关于Quick Action 中 item 的点击事件 回调响应

    - (void)application:(UIApplication*)application            performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem                completionHandler:(void(^)(BOOL))completionHandler {}

    我可以从 shortcutItem 的 type 和 userinfo 来做不同的事件处理

    而最后的 completionHandler 在 API 的说明中我们看到当应用并非在后台

    而是直接重新开进程的时候,会直接返回NO 这样的话我们的回调会放在

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

    这时候 UIApplication 刚好提供了一个可以从 launchOptions 这个字典中

    获取到 shortcutItem 的 keyUIApplicationLaunchOptionsShortcutItemKey

    有了这个Key 我们就可以处理不同的事件

    UIApplicationShortcutItem*item;// 为了更直观的阅读代码 这里分成两行写item = [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey];

    这样我们根据获取到不同的 Action Item 来处理不同的事件

    在 performActionForShortcutItem 回调中

    - (void)application:(UIApplication*)application        performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem        completionHandler:(void(^)(BOOLsucceeded))completionHandler  {if([shortcutItem.typeisEqualToString:@"history"]) {NSLog(@"历史记录");        }elseif([shortcutItem.typeisEqualToString:@"download"]){NSLog(@"查看下载");        }if(completionHandler) {              completionHandler(YES);        }}

    相关文章

      网友评论

          本文标题:3D touch 之 Home Screen Quick Act

          本文链接:https://www.haomeiwen.com/subject/fceeuttx.html