标签: widgetkit

我已将 Widgetkit 添加到我的应用程序中,但现在当应用程序在 Xcode 12 beta 上启动时在 iOS 13 上崩溃

我已将 WidgetKit 添加到我的应用程序中,但在 iOS 13 设备上,当应用程序以以下错误启动时它会崩溃: dyld`__abort_with_payload

导致崩溃的代码部分是这样的:

static func reloadTimelines () {  
 
    if #available(iOS 14, *) {

      WidgetCenter.shared.reloadTimelines(ofKind: "com.myDomain.myApp.ProgressWidget")
   }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过其他不成功的变体,例如:

@available(iOS 14, *)
static func reloadTimelines () {

      WidgetCenter.shared.reloadTimelines(ofKind: "com.myDomain.myApp.ProgressWidget")
}
Run Code Online (Sandbox Code Playgroud)

该项目在objective-c中,我快速导入该类。

但是如果没有在任何地方添加 #import "myApp-Swift-h" 或者使用那个类,它就会一直崩溃。

有人可以告诉我我做错了什么或发生了什么吗?

提前致谢。

编辑:我在 Xcode 11 上尝试此代码并工作!

#if canImport(WidgetKit)
   WidgetCenter.shared.reloadTimelines(ofKind: "com.literautas.StoryPlanner.ProgressWidget")
#endif
Run Code Online (Sandbox Code Playgroud)

但它在 Xcode 12 beta 4 上崩溃了

编辑 2:它也会在 Xcode 12 beta 6 上崩溃

objective-c ios swift widgetkit xcode12

4
推荐指数
1
解决办法
1027
查看次数

iOS 14 Medium Widget Size Background Image Refuses to Fill

For some reason I'm unable to get an image background to aspectFill correctly in XCode Version 12.0, but only on the .systemMedium widget size. It seems to work perfectly on the small and large sizes.

I've got a pretty simple View:

import SwiftUI

@available(iOS 13.0.0, *)
struct Banana: View {

    var body: some View {
        VStack(alignment: .leading){
            Spacer()
            Text("Aardvark Exactlywhat")
                .font(.largeTitle)
                .bold()
                .padding(.bottom, 20)
                .padding(.leading, 20)
                .padding(.trailing, 20)
                .minimumScaleFactor(0.5)
                .foregroundColor(.white)
                .shadow(
                    color: Color.black,
                    radius: 1.0,
                    x: CGFloat(4),
                    y: CGFloat(4))
        } …
Run Code Online (Sandbox Code Playgroud)

widgetkit swiftui ios14

4
推荐指数
1
解决办法
3473
查看次数

如何调试 Xcode 12 Widget

如何在 Xcode 12 上调试小部件 (WidgetKit)?

例如,设置断点或至少使print语句起作用。

谢谢你!

debugging breakpoints widgetkit xcode12

4
推荐指数
1
解决办法
1445
查看次数

本地化 iOS 14 动态小部件配置

我试图根据应用程序语言加载小部件的不同配置,但是当我使用类似以下内容时:

Locale.preferredLanguages
Bundle.main.preferredLocalizations
Bundle.main.localizations

Run Code Online (Sandbox Code Playgroud)

所有这些都仅在 IntentExtensionTarget 中返回“en”。

这是我使用代码的示例:

extension IntentHandler: ReciterAndSurahIntentHandling {
    
    func provideSurahOptionsCollection(for intent: ReciterAndSurahIntent, with completion: @escaping (INObjectCollection<NSString>?, Error?) -> Void) {
        
        Locale.preferredLanguages
        Bundle.main.preferredLocalizations
        Bundle.main.localizations
        // All of them return "en" only, and I have multiple localization for the app.
    }
}
Run Code Online (Sandbox Code Playgroud)

swift widgetkit swiftui ios14

4
推荐指数
1
解决办法
2637
查看次数

应用程序中的小部件未出现在设备中?

我们在将小部件添加到屏幕时遇到问题。我们的应用程序有 2 个小部件,并且应用程序已在 AppStore 中上线。

问题是,有些用户只能看到 1 个小部件(随机,并且使用最新版本的应用程序),有些用户可以看到两个小部件。由于我在我的设备上看到这两个小部件,因此很难调试。

发生在 iPhone 6S iOS 14、iPhone 11 iOS 14 上。我想还有更多用户看不到这些小部件。

有任何已知问题吗?

ios swift widgetkit swiftui

4
推荐指数
2
解决办法
4970
查看次数

如何更改 SwiftUI 分隔线上方和下方的填充?

现在,我有一个包含文本的 VStack,一个包含更多文本的 HStack,以及它们之间的分隔符。问题是在一些较小的设备上,分隔器顶部和底部的填充太多,使结果看起来很奇怪。我怎样才能减少这个填充(即使顶部和底部的文本看起来更接近线条)?

ios widgetkit swiftui

4
推荐指数
1
解决办法
1081
查看次数

WidgetKit 配置,一个参数基于另一个参数的选择

我正在开发一个带有两个动态参数的 WidgetKit 小部件。其中一个参数仅限于第一个参数允许的选项。假设第一个是船长,第二个是船长的船。允许的配置可能是(忽略佳能):

Captains: [Kirk, Picard, Crunch]
Captain: Kirk, Ship: [Enterprise, Galileo]
Captain: Picard, Ship: [Enterprise, Voyager, Cube]
Captain: Crunch, Ship: [Sugar, Berry, Chocula]
Run Code Online (Sandbox Code Playgroud)

我有逻辑工作。例如,如果用户选择 Picard,然后点击“发货”按钮,则只有 Enterprise、Voyager 和 Cube 可用选项。然后,用户可以选择其中一艘飞船(例如 Cube),一切都很好。

然而,当船长更换时,船舶选项不会改变或重置。假设经过上述设置后,用户将队长更改为柯克。飞船仍设置为立方体。用户可以退出小部件的配置,就好像一切都很好,但这是一个无效的配置。

我希望发生的情况:当用户更改船长时,船舶将更改为所选船长的第一个可用船舶选项。如果飞船空白(需要选择),或者用户界面强制提示飞船(受可用选项限制),或者几乎任何其他阻止无效组合的东西,我也很好。

有没有办法根据第一个参数的选择触发对第二个参数的编程更改?

我不想运行时小部件中显示“无效组合”消息。我想我的备份是在用户做出无效选择的情况下为他们选择一艘船,但这并不理想。

如果重要的话,真正的 Widget 中的第一个参数(上面示例中的 Captain)是真正动态的(通过 API 提供的字符串数组)。第二个参数(上面的 Ship)是一组固定的三个选项,其中任何一个、两个或全部三个都可以应用于第一个参数的任何选择。预计用户可以创建具有不同配置的多个小部件。

ios swift widgetkit

4
推荐指数
1
解决办法
1283
查看次数

如何在 SwiftUI 中获取小部件的圆角半径的大小?

在此处输入图片说明 在此处输入图片说明

我想在我的自定义视图周围保持相同的插图。需要外部圆角半径来更改我们自定义视图的圆角半径,

我找不到任何环境变量或任何其他方式来获取小部件本身的角半径。

  • 仅将硬编码值解析为不适用于.cornerRadius()所有设备。由于不同的设备可能对其小部件使用不同的半径。
    var body: some View {
            VStack {
                HStack {
                    VStack {
                        Text("Hello")
                            .font(.title)
                        Text("Widget")
                    }
                    .padding()
                    .background(Color.yellow)
                    .cornerRadius(10)//<=here
                    Spacer()
                }
                Spacer()
            }
            .padding(5.0)
        }

Run Code Online (Sandbox Code Playgroud)

macos ios widgetkit swiftui ipados

4
推荐指数
1
解决办法
540
查看次数

WidgetKit 在 M1 上的模拟器中不起作用,有什么想法吗?

  1. 在M1 机器上创建 SwiftUI 应用程序
  2. 在模拟器上运行
  3. 创建小部件扩展目标
  4. 尝试在模拟器中运行它。

我收到此错误:

2021-10-27 15:35:36.959366-0300 EmojiWidgetExtension[9771:1239405] [db] _LSSchemaConfigureForStore failed with error Error Domain=NSOSStatusErrorDomain Code=-10817 "(null)" UserInfo={_LSFunction=_LSSchemaConfigureForStore, ExpectedSimulatorHash={length = 32, bytes = 0x8367042c 5a0d3739 c4750e92 134b458d ... 2bd5ba9c f73141f5 }, _LSLine=405, WrongSimulatorHash={length = 32, bytes = 0x2bea4bde a7079a50 310364fe 5294f4b1 ... 1a2344cc eb36b0fc }}
2021-10-27 15:35:36.960137-0300 EmojiWidgetExtension[9771:1239405] [db] Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-10817 "(null)" UserInfo={_LSFunction=_LSSchemaConfigureForStore, ExpectedSimulatorHash={length = 32, bytes = 0x8367042c 5a0d3739 c4750e92 134b458d ... 2bd5ba9c f73141f5 }, _LSLine=405, WrongSimulatorHash={length …
Run Code Online (Sandbox Code Playgroud)

widgetkit apple-m1

4
推荐指数
1
解决办法
1355
查看次数

Weather API + WidgetKit - “在不支持并发的函数中调用‘异步’”

TimelineProvider我正在尝试为 iOS 16制作一个WeatherKit,但我正在努力解决如何满足协议签名并使用新的异步 api 的问题。

这是我的代码:

struct WeatherProvider: TimelineProvider {
    
    func getSnapshot(in context: Context, completion: @escaping (WeatherEntry) -> ()) {       
        let weather = try? await WeatherService.shared.weather(for: currentLocation)        
        let entry = WeatherEntry(date: Date(), wind: nil, locationAuthStatus: nil)

        completion(entry)
    }

    // etc
}
Run Code Online (Sandbox Code Playgroud)

编译此命令会引发构建错误'async' call in a function that does not support concurrency

自动修复建议:Add 'async' to function 'getSnapshot(in:completion:)' to make it asynchronous

但如果你这样做,结构就不再符合:Type 'WeatherProvider' does not conform to protocol 'TimelineProvider'

这感觉应该是微不足道的,但我找不到任何关于如何做到这一点的例子。

async-await swift widgetkit weatherkit

4
推荐指数
1
解决办法
1223
查看次数