网站建设资讯

NEWS

网站建设资讯

ios组件开发,iOS组件

【iOS开发工程化——开发中】:三层架构,MVC、MVVM

上一篇我们说到组件化开发是一个App最大一层的架构,那具体到了一个一个的业务组件里,比组件化开发小一点的架构就是三层架构。所谓三层架构就是指把项目中所有的类划分到不同的层,目的是使项目逻辑更加清晰,提升开发和维护的效率,我们一般会把项目分为三层:数据层、业务层、视图层。

专注于为中小企业提供成都网站建设、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业婺城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

注意:严格来讲,三层架构并不真正就比组件化开发小,它们俩只是从不同的角度去做架构而已,往往是相互融合的,比如组件化开发里网络库就是三层架构里数据层的内容,UI库就是三层架构里视图层里的内容等,这里之所以说“三层架构是比组件化开发小一点的架构,主要是针对业务组件来说的”,当然甚至我们在不使用组件化开发时项目里依然可以使用三层架构。

比三层架构再小一点的架构就是视图层架构,我们常说的MVC、MVVM都是˛视图层的架构。

MVC,即Model-View-Controller,它们的关系如下:

MVVM,即Model-View-ViewModel,它们的关系如下:

iOS14 Widget小组件开发实践3——Widget点击交互

根据官方文档的描述,点击 Widget 窗口唤起 APP 进行交互指定跳转支持两种方式:

Widget 支持三种显示方式,分别是 systemSmall 、 systemMedium 、 systemLarge ,其中:

1、 systemSmall 只能用 widgetURL 修饰符实现URL传递接收。

2、 systemMedium 、 systemLarge 可以用 Link 或者 widgetUrl 处理

这两种方式的本质都是 URL Schemes

在查找资料的时候,看到网上有的地方说在 AppDelegate 实现 OpenUrl 进行跳转处理:

然而试了之后发现根本没有响应,其实是需要在 SceneDelegate 里面实现跳转处理,因为 iOS13 后, APP 的 UI 生命周期交由 SceneDelegate 管理,这里拿到需要的 URL ,就能处理产品需求实现了。

creating-a-widget-extension

iOS13 URL Schemes 跳转与传值问题

iOS14 Widget小组件开发实践5——网络图片的加载

以上都是使用 Image 加载本地图片资源,但是 SwiftUI 中的 Image 没有提供直接加载 URL 方式的图片显示,那么如何在 SwiftUI 中让 Image 加载网络图片呢,可以采用异步加载网络图片数据,由 data 转换成 UIimage ,再给 Image 展示

但是这种异步加载图片的方式在 Widget 中却失效了, Image 显示不了图片。

在 TimelineProvider 的 getTimeline 中 completion(timeline) 执行完之后,不再支持图片的异步回调了,所以必须在数据请求回来的处理中采用同步方式,将图片的 data 获取,转换成 UIimage ,在赋值给 Image 展示。

接下里给 iOS14 Widget小组件开发实践2——自定义Widget 里搭建的古诗视图增加一个网络封面图片显示,效果如下:

因为这个免费的 API 接口没有返回图片封面数据,所以就自己网上找个图片用来测试。关于图片请求的时机,这里我是将它放在了 API 接口回调后处理 json 转 model 的这一步:

最后在给 PoetryWidgetView 布局界面:

SwitUI-实现URL图片显示


当前文章:ios组件开发,iOS组件
链接分享:http://njwzjz.com/article/dscjehe.html