最近在學(xué)習(xí)點(diǎn)新的東西,偶然看到一篇博客說到了Today Extension 电禀,看完那篇文章之后自己又實(shí)現(xiàn)了一遍幢码,覺得還是挺有用的,避免時(shí)間久了忘記了尖飞,就寫下來吧症副。
先說一下本篇涉及到的內(nèi)容:
1、App Groups (用來兩個(gè)進(jìn)程之間的數(shù)據(jù)交互用的)政基,需要配置證書贞铣。
2、Extension中怎么使用cocoapods
3沮明、Today Extension 折疊效果
App Groups:
我們想要在兩個(gè)進(jìn)程之間傳輸一些數(shù)據(jù),只要借助它就可以簡單的實(shí)現(xiàn)了辕坝,首先配置一下證書
在這里新建一個(gè)APP Groups ,然后然后添加到已有的APP IDs里
新建一個(gè)singleView、再添加一個(gè)target Today Extension
完了之后應(yīng)該是這個(gè)樣子的
這時(shí)候運(yùn)行你就會(huì)看到一個(gè)hello world 的label了荐健,如果沒有酱畅,點(diǎn)擊編輯琳袄,把擴(kuò)展添加上。這個(gè)label是系統(tǒng)默認(rèn)的纺酸,刪除掉窖逗,在MainInterface.storyboard建一個(gè)table,然后在TodayViewController里實(shí)現(xiàn)datasource,delegate,運(yùn)行你就能看到你的table了餐蔬,
前期的準(zhǔn)備工作已經(jīng)做好了碎紊,接下來我們同host app 來進(jìn)行數(shù)據(jù)交互,首先打開Extension和 App的的App Groups (App的操作步驟一樣)
如果之前有配置證書的話就會(huì)看到已經(jīng)有了用含,直接勾上矮慕。
在APP中存入數(shù)據(jù):
NSUserDefaults*defaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.com.scqc.helloToday"];
[defaults setObject:@[@"1",@"2",@"3",@"4"] forKey:@"array"];
在擴(kuò)展中取數(shù)據(jù):
NSUserDefaults*defaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.com.scqc.helloToday"];
_dataArray = [defaults objectForKey:@"array"];
如何在Extension中使用cocoapods呢:
其實(shí)很簡單,寫podfile的時(shí)候把Extension的target也寫上就行了
target 'App' do
pod 'SDWebImage'
end
target 'Extension' do
pod 'SDWebImage'
end
實(shí)現(xiàn)一個(gè)簡單的table效果啄骇,圖片是用SDWebImage加載的
Tips:
第三個(gè)方法用來調(diào)節(jié)edge的痴鳄,在iOS10之后便不會(huì)再調(diào)用了、edge現(xiàn)在可以設(shè)置為0了缸夹;
要實(shí)現(xiàn)折疊的效果需要設(shè)置
self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded;//設(shè)置可以展開
然后實(shí)現(xiàn)上圖的第二個(gè)方法返回折疊和展開的size就可以了痪寻。
-(void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize{
if (activeDisplayMode==NCWidgetDisplayModeExpanded) {
// 調(diào)節(jié)成展開的狀態(tài)
self.preferredContentSize = CGSizeMake(0, 300);//這里width是不能改變的所以寫0也可以
}else{
// 調(diào)整frame成折疊狀態(tài)
self.preferredContentSize = maxSize;
}
}