簡單的Widget

Widget就是iPhone左滑展示出來的小窗口,我理解為——自家app的又一個入口,哈哈。比如下圖中的天氣。

其實(shí)就覺得這個東西比較神奇好玩兒才打算試試的,但是其中,卻遇到了很多的問題。接下里就系統(tǒng)的記錄一下,如何簡單的實(shí)現(xiàn)這個小的東西,和其中自己遇到的一些問題吧。源代碼點(diǎn)這里。

首先我是創(chuàng)建了一個新的工程,其次因?yàn)閃idget是一個獨(dú)立的進(jìn)程,所以我們要再創(chuàng)建一個target,F(xiàn)ile —— New —— Target 然后選擇Today Extension.

創(chuàng)建好工程之后,就可以先進(jìn)行代碼的編寫了。但是這里有幾個問題問題需要注意。

1、如果在Extension中用到了需要配置路徑的第三方庫,需要切換到Extension中的Target中進(jìn)行配置。

2、我是用cocoapod管理第三方工具的,所以這個時候,進(jìn)行第三方管理的時候,需要區(qū)分是給那個target添加第三方庫。

3、當(dāng)代碼及庫都配置好之后,就需要進(jìn)行代碼的運(yùn)行了,這個時候?yàn)榱藢蓚€進(jìn)程聯(lián)系起來,就需要添加組了。兩個進(jìn)程一定要加到同一個組里面,并且,組要和BundleID一致。同時配置BundleID的時候,主進(jìn)程是正常配置,但是Widget進(jìn)程的BundleID的格式是BundleID.工程名稱。這點(diǎn)需要注意。其實(shí)默認(rèn)的格式是正確的,只要按著格式改成自己的BundleID就好,但是就怕遇到像我這種,看都不看直接改的。所以這里需要注意啊~~~

4、運(yùn)行代碼之前還有一個配置需要修改。直接上圖,按照圖修改就好。一定要改這里,否則的話是加載不出來的。

需要配置的差不多就這些了,但是這些都是很重要的,很容易造成最后顯示的效果就是無法載入,這是最悲傷的了。接下來是關(guān)于Widget的一些基本信息的內(nèi)容吧。

1、Widget有兩種模式,一種是展開狀態(tài),一種是隱藏狀態(tài)。通過代碼可控制。

/*設(shè)置widget的展示模式:

NCWidgetDisplayModeExpanded 展開

NCWidgetDisplayModeCompact 隱藏

*/

self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded;

2、Widget的樣式是可以通過更改展開模式的協(xié)議方法來進(jìn)行更改的。比如高度的修改。

//隱藏展開模式改變是調(diào)用此方法

-(void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize

{

if(activeDisplayMode == NCWidgetDisplayModeCompact)

{

self.preferredContentSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width, 110);

}

else

{

self.preferredContentSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width, 210);

}

}

3、Widget的高度,一般來說最低是110,也就是說,當(dāng)設(shè)置widget的高度時,低于110的均是110。

4、設(shè)置好模式和高度之后,就可以正常的創(chuàng)建Widget的頁面了,但是頁面不要太過復(fù)雜,通過查看資料,Widget頁面能承載的最大內(nèi)存是11M。

5、設(shè)置頁面之后,如果與app主體有交互,首先需要頁面點(diǎn)擊事件通過以下調(diào)起URL的方式來進(jìn)行反饋。這個方法其實(shí)是跟app外部通過URL來調(diào)起app是一樣的道理,所以同樣的也需要設(shè)置一個scheme URL,這個過后還會有說明。

6、頁面代碼完成之后,相應(yīng)了,為了能調(diào)起app需要在AppDelegate中配置相應(yīng)的代碼。

7、剛說過,如果要調(diào)起app需要配置一下scheme URL,這里是要配置app主體的scheme URL。配置規(guī)則則是與之前代碼中設(shè)置的URL的規(guī)則保持一致。

都配置完成之后,運(yùn)行代碼之后,應(yīng)該就可以了。但是這個時候左滑會看不到自己的小窗口。其實(shí)是因?yàn)樽约簺]有加入而已。只需要點(diǎn)擊那個編輯,然后加入自己的widget就可以啦!

最近做Widget差不多遇到的就這些問題了,目前做的很簡單,只是頁面的展示,并沒有數(shù)據(jù)的交互和刷新之類的。就以后繼續(xù)補(bǔ)充吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,024評論 4 61
  • 前兩天剛過了情人節(jié),朋友圈先是一陣?yán)寺鲪鄣膱D片掃蕩全場,打得單身狗們好一個猝不及防,緊隨其后又是一番悲傷感慨撲面...
    時間的針腳閱讀 918評論 4 1
  • github地址(完整Demo下載) https://github.com/zhouxu88/BottomNavi...
    萬戶猴閱讀 27,996評論 10 37

友情鏈接更多精彩內(nèi)容