答案 0 :(得分:3)
Swift3& Xcode8
对于上述内容,您需要为主应用程序创建扩展程序
我需要创建哪个扩展才能实现上述目标?
Ans:今日推广
如何创建扩展程序?
Xcode - >档案 - >新 - >目标 - >今日延期
创建扩展后,如果要将数据从主应用程序传递到扩展,那么您需要了解AppGroups
AppGroups只不过是在主应用程序与扩展程序之间共享数据
如何实现?
简单
Go to Xcode -> Capabilities -> AppGroups Enable -> Click + -> Add a New Container with format group.*
例如:group.com.yourCompany.ProjectName
转到主应用程序
初始化默认为套件
var appGroupDefaults = UserDefaults.standard
appGroupDefaults = UserDefaults(suiteName:"group.com.yourCompany.ProjectName")!
使用Suite初始化默认值并设置ArrayData或String Data,无论您需要传递给Extension
appGroupDefaults.set(value: arrayDataToPasstoTodayExtension, forKey: "arrayDatatoDisplayInToday")
然后在Extension
中检索数据之后var appGroupDefaults = UserDefaults.standard
appGroupDefaults = 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 Widget中的更多选项[今天]
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)
}
答案 1 :(得分:0)
今天延期。 Apple programming guide
答案 2 :(得分:0)
是的,您可以使用Today扩展来显示Widget。从iOS 10如果启用3D快捷项目,则今日扩展(小部件)将显示在3D快捷项目下。所以你可以在2个地方看到Widget。 1.小工具屏幕 2.在3D快捷项目下。 (如果启用3D快捷项目)