欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

ios開發(fā)widget,iOs開發(fā)是什么意思

iOS14 Widget小組件開發(fā)實踐5——網(wǎng)絡(luò)圖片的加載

以上都是使用 Image 加載本地圖片資源,但是 SwiftUI 中的 Image 沒有提供直接加載 URL 方式的圖片顯示,那么如何在 SwiftUI 中讓 Image 加載網(wǎng)絡(luò)圖片呢,可以采用異步加載網(wǎng)絡(luò)圖片數(shù)據(jù),由 data 轉(zhuǎn)換成 UIimage ,再給 Image 展示

在天柱等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,全網(wǎng)整合營銷推廣,外貿(mào)網(wǎng)站制作,天柱網(wǎng)站建設(shè)費用合理。

但是這種異步加載圖片的方式在 Widget 中卻失效了, Image 顯示不了圖片。

在 TimelineProvider 的 getTimeline 中 completion(timeline) 執(zhí)行完之后,不再支持圖片的異步回調(diào)了,所以必須在數(shù)據(jù)請求回來的處理中采用同步方式,將圖片的 data 獲取,轉(zhuǎn)換成 UIimage ,在賦值給 Image 展示。

接下里給 iOS14 Widget小組件開發(fā)實踐2——自定義Widget 里搭建的古詩視圖增加一個網(wǎng)絡(luò)封面圖片顯示,效果如下:

因為這個免費的 API 接口沒有返回圖片封面數(shù)據(jù),所以就自己網(wǎng)上找個圖片用來測試。關(guān)于圖片請求的時機,這里我是將它放在了 API 接口回調(diào)后處理 json 轉(zhuǎn) model 的這一步:

最后在給 PoetryWidgetView 布局界面:

SwitUI-實現(xiàn)URL圖片顯示

iOS14 Widget小組件開發(fā)實踐3——Widget點擊交互

根據(jù)官方文檔的描述,點擊 Widget 窗口喚起 APP 進行交互指定跳轉(zhuǎn)支持兩種方式:

Widget 支持三種顯示方式,分別是 systemSmall 、 systemMedium 、 systemLarge ,其中:

1、 systemSmall 只能用 widgetURL 修飾符實現(xiàn)URL傳遞接收。

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

這兩種方式的本質(zhì)都是 URL Schemes

在查找資料的時候,看到網(wǎng)上有的地方說在 AppDelegate 實現(xiàn) OpenUrl 進行跳轉(zhuǎn)處理:

然而試了之后發(fā)現(xiàn)根本沒有響應(yīng),其實是需要在 SceneDelegate 里面實現(xiàn)跳轉(zhuǎn)處理,因為 iOS13 后, APP 的 UI 生命周期交由 SceneDelegate 管理,這里拿到需要的 URL ,就能處理產(chǎn)品需求實現(xiàn)了。

creating-a-widget-extension

iOS13 URL Schemes 跳轉(zhuǎn)與傳值問題

iOS14 Widget小組件開發(fā)(Widget Extension)

File - New - Target - Widget Extension

本文主要以 未勾選 用戶配置屬性的情況說明

為小組件展示提供一切必要信息的結(jié)構(gòu)體,遵守 TimelineProvider 協(xié)議,產(chǎn)生一個時間線,告訴 WidgetKit 何時渲染與刷新 Widget,時間線包含一個你定義的自定義TimelineEntry類型。時間線條目標識了你希望WidgetKit更新Widget內(nèi)容的日期。在自定義類型中包含你的Widget的視圖需要渲染的屬性。

Timeline的刷新策略是會延遲的,并不一定根據(jù)你設(shè)定的時間精確刷新。同時官方說明了每個widget窗口小部件每天接收的刷新都會有數(shù)量限制

TimelineProvider官方解釋

渲染 Widget 所需的 數(shù)據(jù)模型 ,需要遵守 TimelineEntry 協(xié)議。

屏幕上 Widget 顯示的內(nèi)容,可以針對不同尺寸的 Widget 設(shè)置不同的 View。

一個Widget只能實現(xiàn)大中小三個不同尺寸的組件形式,如果現(xiàn)有需求要做不同功能并且相同尺寸規(guī)格的組件則需要實現(xiàn)多組件

1.通過修改原Widget入口文件方法添加更多配置來支持多個Widget

2.另建SwiftUI文件實現(xiàn)組件功能,并去除 @main ,修改相同函數(shù)名

并在Widget頁面中 Entry 中綁定對應(yīng)的模型

如果主APP用的swift編寫,可以將網(wǎng)絡(luò)請求模塊文件共享或pods庫共享(方法后文會介紹)

posterFromJson 此數(shù)據(jù)模型轉(zhuǎn)換方法僅適用簡易接口(為了偷懶????♀?),復(fù)雜數(shù)據(jù)模型還是用 HandyJSON 或 KaKaJson 解析

若用第三方模型轉(zhuǎn)換方法,圖片的同步請求處理放置于 getTodayPoster 的請求中同步處理即可

然后更新補全 placeholder getSnapshot Previews 處相應(yīng)的 Entry 即完成Widget內(nèi)容展示

點擊Widget窗口喚起APP進行交互指定跳轉(zhuǎn)支持兩種方式:

Widget三種尺寸規(guī)格中

接收方式

APPDelegate 中接收返回的URL

如果項目實現(xiàn)了 SceneDelegate 則需要在 SceneDelegate 里面實現(xiàn)跳轉(zhuǎn)處理

由于widget跟APP間相互獨立,如果想用相同的數(shù)據(jù)則需要兩者間數(shù)據(jù)共享,創(chuàng)建 App Group

主APP中 Target - Signing Capability - +Capability - 添加 App Group

ps:網(wǎng)上說的還需創(chuàng)建申請 APPID 但在開啟自動管理 Automatically manage signing 的情況下xcode會自動給你創(chuàng)建相關(guān)聯(lián)的APPID

兩者間的數(shù)據(jù)共享主要通過 UserDefaults 和 FileManager 兩種形式。

以O(shè)C中使用 UserDefaults 共享數(shù)據(jù)為例

oc、swift混編調(diào)用

完成后即可使用pods中的第三方SDK了

Pods第三方SDK使用錯誤提示

如果在pods導(dǎo)入共享第三方庫,或者使用 [UIApplication sharedApplication] 方法報錯如下時

則需要在 pods Target 里面,選中出錯的SDK并點擊 buildSettings 搜索 Require

然后把 Require Only App-Extension-Safe API 然后把YES改為 NO 即可

2022-04-02 -- iOS 14 widget 小組件開發(fā)

刷新widget 的語法只支持 swift。主項目是 OC時, 需要創(chuàng)建橋接文件

然后在 Appdelegate 的 didFinishLaunchingWithOptions 調(diào)用刷新,也可在 app 退出后刷新一次。

目前好像只支持 swift 庫。 OC庫即使共享了也導(dǎo)入不了

網(wǎng)站名稱:ios開發(fā)widget,iOs開發(fā)是什么意思
網(wǎng)頁URL:http://chinadenli.net/article45/dsehjhi.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器網(wǎng)站營銷全網(wǎng)營銷推廣手機網(wǎng)站建設(shè)域名注冊動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)