如何创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")
在扩展
为ShowLess和ShowMore更多选项的小工具[今天]
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快捷方式项目)