today extension 开发笔记

来源:互联网 发布:2016淘宝不能刷单了 编辑:程序博客网 时间:2024/06/07 05:57

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);    }}

参考:iOS 10的那些坑之 Today Widget

原创粉丝点击