1.today extension 与 app 通信
- 项目中添加app group
- 使用NSUserDefault,例如
//与today extension 通信
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.FastLauncherGroup"];
[userDefaults setObject:titleArray forKey:@"group.FastLauncherGroup.titleArray"];
//extension 获取数据
NSUserDefaults *userDefaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.FastLauncherGroup"];
NSMutableArray *titleArr = [userDefaults objectForKey:@"group.FastLauncherGroup.titleArray"];
2.today extension 边界设置
#pragma mark
-(UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets {
return UIEdgeInsetsZero;
}
参考:How to determine the Today extension left margin properly in iOS 8?
3.show more 按钮
iOS10 留给extension默认尺寸较小,需要点击show more 按钮才能显示完整view。需要在viewDidLoad 方法中设置显示模式:
self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded;
self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeCompact;
//最好加上系统版本判断,否则iOS10以下系统报错
double version = [[UIDevice currentDevice].systemVersion doubleValue];//判定系统版本。
if(version>=10.0f){
self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded;
}
4.设置显示模式后,iOS10 下 extension 仍然不能完全显示?
- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize {
switch (activeDisplayMode) {
case NCWidgetDisplayModeExpanded:
self.preferredContentSize = CGSizeMake(0, viewHeight);
break;
case NCWidgetDisplayModeCompact:
self.preferredContentSize = CGSizeMake(0, viewHeight);
}
}