官方對widget的解釋:App Extension Programming Guide: Today
People view Today widgets in the Today area of Notification Center. Because people configure the Today area so that it displays the information they value most, it works well to approach the design of your widget with the goal of earning a place among the user’s most important items.
extension是iOS8新開放的一種對幾個固定系統(tǒng)區(qū)域的擴展機制,extension并不是一個獨立的app倔撞,它有一個包含在app bundle中的獨立bundle助泽,extension的bundle后綴名是.appex冯事;需要依賴于containning app判哥。
那么如何創(chuàng)建widget忱叭?
創(chuàng)建一個工程隔崎,在該工程里添加targets:
新建過后,項目的樣子
運行一下結果是
搭建簡單的交互界面
文件配置:
系統(tǒng)生成的info.plist文件默認是使用Storyboard 實現(xiàn)的界面韵丑;如果你想使用代碼實現(xiàn)是界面的搭建爵卒,需更改這個配置文件:
NSExtensionAttributes:這是一個描述擴展點具體屬性的字典,就像照片編輯擴展中的PHSupportedMediaTypes一樣撵彻。
NSExtensionPrincipalClass:這是擴展模板創(chuàng)建的主體視圖控制器類钓株,比如TodayViewController。當載體應用程序(host app)調用擴展時陌僵,擴展點會實例化這個類轴合。
NSExtensionMainStoryboard(只適用于iOS):擴展默認的Storyboard文件,一般名為MainInterface拾弃。
特別提醒值桩,如果你是用的Swift 可能需要在前面加上$(PRODUCT)
更新widget視圖:方法為
運行結果為:
UI搭建好了,如何根據UI上的按鈕或者別的觸發(fā)事件進行跳轉呢豪椿?
首先呢奔坟,你需要在你的項目中添加URL Type
然后在點擊事件回調到TodayViewController 的時候,通過
此方法進行跳轉搭盾。那么這么多按鈕咳秉,如何進行不同的跳轉呢,或者不同頁面呢鸯隅,答案在這里
你可以在Appdelegate 中的方法里澜建,根據URL進行跳轉,具體跳到哪里蝌以,你說了算炕舵,哈哈哈哈哈。
iOS 10的適配上你可以
這樣處理跟畅。
未完待續(xù)咽筋。。徊件。奸攻。Demo地址