如何创build在iOS 10主屏幕上显示的小部件

我需要在iPhone的主屏幕上创build自定义小部件。 我已附上示例图像。 请给我任何想法哪个扩展将有助于创造这一点。 在这里输入图像说明

Swift3和Xcode8

对于上面的你需要为你的主应用程序创build一个扩展

  • 我需要创build哪个扩展才能实现上述目标?

    答:今天延期

  • 如何创build扩展?

    Xcode – >文件 – >新build – >目标 – >今天的扩展

在创build扩展之后,如果您想要将数据从主应用程序传递给扩展,那么您需要了解有关AppGroups的信息

AppGroups只是在主应用程序和扩展之间共享数据

如何实现?

只是简单👇

Go to Xcode -> Capabilities -> AppGroups Enable -> Click + -> Add a New Container with format group.* 

例如: group.com.yourCompany.ProjectName

转到主应用程序

初始化Suite的默认值

 var appGroupDefaults = UserDefaults.standard appGroupDefaults = UserDefaults(suiteName:"group.com.yourCompany.ProjectName")! 

使用Suite初始化默认值并设置ArrayData或String数据后,无论您需要传递给Extension,

 appGroupDefaults.set(value: arrayDataToPasstoTodayExtension, forKey: "arrayDatatoDisplayInToday") 

然后在分机Retrie中检索数据之后

 var appGroupDefaults = UserDefaults.standard actionGroupDefaults = UserDefaults(suiteName:"group.com.yourCompany.ProjectName")! let dataArray = appGroupDefaults.value(forKey: "arrayDatatoDisplayInToday")! as! NSMUtableArray Print("Hurray i got the data from Main App to Extension") 

在扩展

ShowLessShowMore更多选项的小工具[今天]

 override func viewDidLoad() { self.preferredContentSize = CGSize(width: 320, height: CGFloat(yourArrayValuesCount.count)*90 ) if #available(iOSApplicationExtension 10.0, *) { self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded } else { // Fallback on earlier versions } } // For iOS 10 @available(iOS 10.0, *) @available(iOSApplicationExtension 10.0, *) func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { self.preferredContentSize = (activeDisplayMode == .expanded) ? CGSize(width: 320, height: CGFloat(yourArrayValuesCount.count)*90 ) : CGSize(width: maxSize.width, height: 90) } 

今天延期。 苹果编程指南

是的,您可以使用“今日”扩展程序来显示小工具。 从iOS 10开始如果启用3D快捷方式项目,则在3D快捷方式项目下将显示“今天”扩展程序(Widget)。 所以你可以在2个地方看到Widget。 1.小工具屏幕2.在3D快捷方式项目下。 (如果启用3D快捷方式项目)