Widget就是iPhone左滑展示出來的小窗口臀突,我理解為——自家app的又一個入口勉抓,哈哈。比如下圖中的天氣候学。
其實就覺得這個東西比較神奇好玩兒才打算試試的藕筋,但是其中吗蚌,卻遇到了很多的問題摩梧。接下里就系統(tǒng)的記錄一下详瑞,如何簡單的實現(xiàn)這個小的東西鄙币,和其中自己遇到的一些問題吧。源代碼點這里冯乘。
首先我是創(chuàng)建了一個新的工程目代,其次因為Widget是一個獨立的進程靴迫,所以我們要再創(chuàng)建一個target濒蒋,F(xiàn)ile —— New —— Target 然后選擇Today Extension.
創(chuàng)建好工程之后盐碱,就可以先進行代碼的編寫了。但是這里有幾個問題問題需要注意沪伙。
1瓮顽、如果在Extension中用到了需要配置路徑的第三方庫,需要切換到Extension中的Target中進行配置围橡。
2暖混、我是用cocoapod管理第三方工具的,所以這個時候翁授,進行第三方管理的時候拣播,需要區(qū)分是給那個target添加第三方庫。
3黔漂、當(dāng)代碼及庫都配置好之后诫尽,就需要進行代碼的運行了,這個時候為了將兩個進程聯(lián)系起來炬守,就需要添加組了。兩個進程一定要加到同一個組里面剂跟,并且减途,組要和BundleID一致。同時配置BundleID的時候曹洽,主進程是正常配置鳍置,但是Widget進程的BundleID的格式是BundleID.工程名稱。這點需要注意送淆。其實默認的格式是正確的税产,只要按著格式改成自己的BundleID就好,但是就怕遇到像我這種,看都不看直接改的辟拷。所以這里需要注意啊~~~
4撞羽、運行代碼之前還有一個配置需要修改。直接上圖衫冻,按照圖修改就好诀紊。一定要改這里,否則的話是加載不出來的隅俘。
需要配置的差不多就這些了邻奠,但是這些都是很重要的,很容易造成最后顯示的效果就是無法載入为居,這是最悲傷的了碌宴。接下來是關(guān)于Widget的一些基本信息的內(nèi)容吧。
1蒙畴、Widget有兩種模式唧喉,一種是展開狀態(tài),一種是隱藏狀態(tài)忍抽。通過代碼可控制八孝。
/*設(shè)置widget的展示模式:
NCWidgetDisplayModeExpanded 展開
NCWidgetDisplayModeCompact 隱藏
*/
self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded;
2、Widget的樣式是可以通過更改展開模式的協(xié)議方法來進行更改的鸠项。比如高度的修改干跛。
//隱藏展開模式改變是調(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ào)起URL的方式來進行反饋。這個方法其實是跟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īng)該就可以了喳资。但是這個時候左滑會看不到自己的小窗口。其實是因為自己沒有加入而已腾供。只需要點擊那個編輯仆邓,然后加入自己的widget就可以啦!
最近做Widget差不多遇到的就這些問題了伴鳖,目前做的很簡單节值,只是頁面的展示,并沒有數(shù)據(jù)的交互和刷新之類的榜聂。就以后繼續(xù)補充吧搞疗。