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

时间:2016-11-08 09:10:59

标签: ios iphone ipad

我需要在iPhone的主屏幕上创建自定义小部件。我附上了样本图片。请告诉我哪个扩展程序有助于创建此内容。enter image description here

3 个答案:

答案 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快捷项目)