新建一个项目 然后– File - New - targe 新建一个TodayExtension
我们把新建的 叫做子项目 原来的叫做主项目 子项目是一个单独的app group证书 在子项目和主项目中 分别代开 App Groups
LsNewTarget 为创建的weight的名称 然后在子项目中 按照同样的方法添加 AppGroup
这样weight就创建好了 提示一个 如果没有证书 会报错 但是可以在模拟机上面跑
关于weight和主app之间的传值
发送
//group.com.LsNewTarget.app 这个是 appGroup的名字 NSUserDefaults* defaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.com.LsNewTarget.app"]; [defaults setObject:@"321321" forKey:@"DSL"]; if ([defaults synchronize]) { NSLog(@"发送成功"); }接收
//group.com.LsNewTarget.app 这个是 appGroup的名字 NSUserDefaults *defaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.com.LsNewTarget.app"]; [defaults objectForKey:@"DSL"]; if ([defaults objectForKey:@"DSL"]) { _titleLabel.text = [defaults objectForKey:@"DSL"]; } else { _titleLabel.text = @"没有取到值"; }关于weight的折叠
//右上角的折叠按钮 if ([[UIDevice currentDevice].systemVersion integerValue]>=10) { self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded; } //折叠的回调 - (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize { // NCWidgetDisplayModeCompact, // Fixed height // NCWidgetDisplayModeExpanded, NSUserDefaults*defaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.LsNewTarget"]; [defaults objectForKey:@"DSL"]; if (activeDisplayMode == NCWidgetDisplayModeCompact ) { //高度最低为110 self.preferredContentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width ,110); } else { //因为机子型号不一样所以最大搞多可能不一样,这里设置最大 self.preferredContentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width ,MAXFLOAT); } }调整大小
- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets { return UIEdgeInsetsMake(0, -20, 0, 0); }如果需要些输入框的话 需要presen 到一个新的界面就可以弹出键盘了
88