美文网首页
swift 中构建3DTouch 及 widget

swift 中构建3DTouch 及 widget

作者: 大神风格化X | 来源:发表于2019-06-26 09:52 被阅读0次
3DTouch.jpg

首先,我希望通过本文能帮到大家,大家的方便就是我最好的回报!
iOS设备上对用户的体验始终都是日渐提升的,其中3DTouch和widget的体验也是重要的一环。这不,最近我们多人开发的项目中也要求去做这块。
首先,支持3DTouch的苹果设备默认会帮每个没有做这块的APP会生成一个自带分享功能,弹出的页面也是苹果系统自己控制的。我们想要做一个自定义的touch功能会覆盖系统的这个分享功能。那么,具体是怎么去一一实现我们自定义的效果呢。我接着和大家聊一聊。
iOS系统有个shortcutItems的属性,这个里面就是暴露出来给用户去添加自定义的touch样式的。我们仅需要控制每个UIApplicationShortcutItem的样式就好了。这个类有三个属性UIApplicationShortcutIcon,localizedTitle,localizedSubtitle。分别给这三个属性赋值就是对图片,标题,详情标题的赋值。如果某个值传空,则对应的地方也会空着,来表示,一般第三个属性传空来显示图片和标题就好了。
那么根据touch如何控制弹出APP相对应的页面呢,这里要用到APPDelegate中的一个方法来控制逻辑,这个方法就是application(_ application: performActionFor shortcutItem: , completionHandler: )
通过在这里面对着shortcutItem.type进行判断来分类处理相关逻辑。
做好如上操作,基本上3DTouch功能就可以用了。那么,紧接着我会为大家聊一下widget的实现
widget的实现其实相当于要构建一个子APP,过程就是在project中的capabilities中通过"+"号来添加一个叫"Today Extension"的项目,添加命名完了之后,需要让主APP与这个子APP相互关联,来达到偏好设置及写文件处理的共享。当然主APP中的方法在子APP中不能调用。那怎么去做这个APP组关联呢。同样是在capabilities中去设置,在APP Group中打开按钮,通过加号来添加这个组名,在子APP中同一位置将这些操作都对应上。以上这些步骤可视为widget的环境搭建
说完了搭建,更重要的一步就是如何具体实现了。widget上的页面显示是完全依赖于子APP上的界面(换句话来说就是这上面的界面)。默认创建的"Today Extension"会给出MainInterface.storyboard的xib文件。在这上面操作最好还是用到xib而不是纯代码。因为很可能会出现对应控件不显示的问题。然后按照你们的需求及样式来铺设相关的界面。如果要求网络传输请求,可以通过widget中extensionContext?.open(NSURL(string: url)! as URL, completionHandler: { (bool) in})这个方法来实现(注意这个方法中url参数需要带有主APP的url schemes)。completionHandler里面要写回调之后的操作,比如要渲染相关的UI,那么调用这个方法之后,我们如何能请求对应的接口呢。这时候需要在主APP上的APPDelegate中的一个方法func application(_ app: ,open url: ,options: )来实现。通过传输的url中带有某个前缀来判断是点了哪个按钮。然后根据URL后缀带有的参数来进行网络请求。请求完了会调用到之前的回调结果,我们在这个回调中写出对应的结果就OK了。
以上就是做3DTouch及widget中用到的思路及步骤,如果有疑问,欢迎来致微(death-god-xpc)

相关文章

  • swift 中构建3DTouch 及 widget

    首先,我希望通过本文能帮到大家,大家的方便就是我最好的回报!iOS设备上对用户的体验始终都是日渐提升的,其中3DT...

  • Swift开发之3DTouch实用演练

    Swift开发之3DTouch实用演练 Swift开发之3DTouch实用演练

  • Widgets 介绍

    Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用widget构建...

  • Flutter 学习 - Widget 之 Text

    前言 什么是Widget Widget是学习Flutter的基础,用于构建UI,相当于Android中的View,...

  • 1. Flutter Widget

    定义:Widget是Flutter中构建UI的组件。 widget的两种状态 无状态的StatelessWidge...

  • ios 3DTouch 官方工程OC版

    ios 3DTouch 官方工程OC版 想要看一下 官方 的3DTouch教程,发现例子竟然只有swift版本的,...

  • XCode12 OC调用Swift报错解决方案

    最近项目中做小组件刷新时需要使用到swift代码,于是在oc代码加入swift类,在swift类中调用Widget...

  • Flutter widget框架

    Flutter Widget 采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用 Widget...

  • Flutter入门|(二)Widget

    Widget Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用w...

  • Flutter widget组件简介

    一、简介 Flutter Widget采用现代响应式框架构建,核心思想是用widget组件来构建UI,当widge...

网友评论

      本文标题:swift 中构建3DTouch 及 widget

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