iOS14小部件没有动态更改

问题描述

我想更改ios14小部件的背景字体样式

这是我的代码

func getTimeline(in context: Context,completion: @escaping (Timeline<Entry>) -> ()) {
    var entries: [SimpleEntry] = []
    
    //Steps
    let SteGroupName : String = "group.com.ColorWidget.SmartTimeWidget"
    
    let strStyle = UserDefaults.init(suiteName: SteGroupName)?.value(forKey: "NumberOfStyle_APP") as? String ?? "1"
    let strBatteryShowOrNot = UserDefaults.init(suiteName: SteGroupName)?.value(forKey: "isBatteryShow_APP") as? String ?? "YES"
}

第一次使窗口小部件的更改完美地反映出来,但在其余时间中,窗口小部件的更改不会随最新更改而更新。

请提供任何帮助。

解决方法

对于您而言,每当在包含应用程序的应用程序组中更新UserDefaults时,您都需要致电

WidgetCenter.shared.reloadAllTimelines() // Or reloadTimelines(ofKind)

在包含应用的一侧(当它进入后台(或您希望的其他情况)时)。

然后,窗口小部件扩展程序将通过调用getTimeline()重新加载时间线。