我有一个带有 SwiftUIText计时器日期的小部件。它按预期倒计时。但是,当设备锁定时,计时器将被冻结。
要重现它,请将 SwiftUIText(_:style:)视图添加到小部件并将小部件放置在“今日视图”上。倒计时应该按预期进行。但是,请锁定手机,然后在锁定状态下查看“今日视图”。计时器被冻结。
以下是完整的工作示例代码:
import WidgetKit
import SwiftUI
struct Provider: TimelineProvider {
func placeholder(in context: Context) -> SimpleEntry {
SimpleEntry(date: Date())
}
func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {
let entry = SimpleEntry(date: Date())
completion(entry)
}
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
var entries: [SimpleEntry] = []
// Generate a timeline consisting of five entries an hour apart, starting from the current date.
let currentDate = Date()
for …Run Code Online (Sandbox Code Playgroud) 我试图找出为什么我的小部件没有重新加载。我想entries从内部打印数组func getTimeline到控制台。
但是打印语句不会出现在控制台中。
如何让打印语句出现在控制台中?
WidgetCenter.shared.getCurrentConfigurations()返回一个结构列表WidgetInfo(一个对应于用户设置的每个小部件),每个结构都包含一个id参数,文档称该参数是“小部件的稳定身份”。
有什么方法可以在提供时间线的同时id让小部件保持同样的稳定性吗?换句话说,当我们在 IntentTimelineProvider 的实现中为该小部件构建时间线时,我想访问当前小部件的结构。WidgetInfogetTimeline(for...)
我有一个应用程序,包括 Apple Watch 应用程序和 WidgetKit (iOS 16) 扩展。
\niOS 应用程序将数据发送WatchConnectivity到 Apple Watch 应用程序并在那里显示。它还使用 向 WidgetKit ( iOS 16-Lockscreen ) 扩展提供数据GroupUserDefaults。所有这些都可以正常工作\xe2\x9c\x85。
我的问题:
\n我现在正在尝试向WidgetKit complication extension(WatchOS 9)提供数据。我希望能够访问以前编写的UserDefaultsApple Watch 应用程序或共享的GroupUserDefaults. 但我无法访问其中的任何数据。我还检查了文档,但我找不到任何明确设计用于向并发症共享数据的方法。\nClockKit方法将不适用于WidgetKit并发症(https://developer.apple.com/documentation/widgetkit/converting- a-clockkit-应用程序)。
是否有人设法将数据共享到 WidgetKit 复杂功能,而无需像 Apple 示例那样请求服务器 API?(https://developer.apple.com/documentation/widgetkit/adding_widgets_to_the_lock_screen_and_watch_faces)
\n我想AccessoryWidgetBackground()向accessoryRectangular小部件系列添加完整尺寸。
我创建了一个全新的项目并添加了一个全新的小部件。然后我将视图更改为:
struct Some_WidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
AccessoryWidgetBackground()
.frame(width: .infinity, height: .infinity)
.ignoresSafeArea()
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在背景模糊的情况下占据整个视图?
这是在 iOS 17 Beta 8 和 Xcode 15 Beta 8 上
在我的应用程序中,我有一个在主应用程序和扩展之间共享的代码框架。在此框架中,我声明了 AppEntities 和 AppEnums。我可以从任何地方(主应用程序和扩展)完美地使用它们来处理按钮之类的事情,以及框架中声明的意图参数。它们也按预期出现在快捷方式中。问题是,当我尝试将它们用于 WidgetConfigurationIntent 的参数时,我收到Unable to determine value type for type <AppEnum>编译器错误。
框架已导入,我的 AppEnum 已公开。我还尝试使用 AppIntentsPackage API,但据我所知,这没有任何作用。到目前为止,我发现的唯一解决方法是基本上复制代码并使用不同的名称在扩展中重新声明 AppEnum,将其用作参数,然后初始化框架的 AppEnum 版本(这是我使用的标准意图)按钮和快捷方式期望)。这并不完全优雅且不易维护,因此我们将不胜感激适当的解决方案。有任何想法吗?
我正在尝试在模拟器中开发一个 iOS 14 小部件,但每次运行该应用程序时,我都会收到以下警告。
MobileGestaltCache.c:38: No persisted cache on this platform.
Run Code Online (Sandbox Code Playgroud)
然而,这不会破坏任何东西,但不知道如何解决这个问题。
我想检查用户是否将我的小部件添加到主屏幕,是否有 API?我找不到一个。WidgetCenter.getCurrentConfigurations返回应用程序提供的所有可用小部件,而不是使用过的小部件。
我寻找这样一个 API 的原因是:
WidgetCenter应用程序中发生状态更改时触发时间线重新加载。我在主屏幕和小部件库中遇到了 iOS 14 小部件的奇怪图形问题(闪烁)。安装应用更新后似乎会出现此问题。在开发过程中,我认为这是 iOS 模拟器的问题,但现在用户在我发布应用更新后报告了这个问题。
有人遇到同样的问题吗?有没有修复它或者它是Apple的错误?
这是显示问题的 2 个视频。一次在主屏幕上,一次在小部件库中。主屏幕闪烁 Widget Gallery 闪烁
我正在尝试使用 SwiftUI 和 WidgetKit 布局 tableView,并希望获得与 Apple 的 Notes 小部件类似的结果。
我当前的实现成功地在.systemLarge小部件中布置了视图,但在.systemMedium小部件中却没有。我想将视图固定到小部件的顶部,以便“收藏夹”的标题在.systemMedium.
struct PlacesWidgetEntryView : View {
var entry: Provider.Entry
let places = [
Place(name: "Place 1", imageName: "baseline_star_black_24pt"),
Place(name: "Place 2", imageName: "baseline_star_black_24pt"),
Place(name: "Place 3", imageName: "baseline_star_black_24pt"),
Place(name: "Place 4", imageName: "baseline_star_black_24pt"),
Place(name: "Place 5", imageName: "baseline_star_black_24pt"),
]
var body: some View {
VStack {
//Header
HStack {
Text("FAVOURITES")
.bold()
.frame(height: 8)
Spacer()
}
.padding()
.background(Color.blue)
//TableView
LazyVStack {
ForEach(places, id: \.self) { …Run Code Online (Sandbox Code Playgroud)