【问题标题】:Images not rendering in new iOS 16 Widgets?图像未在新的 iOS 16 小部件中呈现?
【发布时间】:2022-10-21 23:54:34
【问题描述】:

我正在开发一个新的 .accessoryInline 小部件,在 iOS 16 中引入。它非常简单,只显示静态文本和图像,所述图像是自定义 SF 符号,经过验证并在其他可以正常工作的地方使用(例如 .accessoryRectangular 小部件)。这是我的代码:

case .accessoryInline:
            HStack {
                Image("mysymbol.car")
                  .resizable()
                  .widgetAccentable()
                Text("My Static Title")
            }

然而,这只会在运行应用程序时呈现文本,并在图像应该存在的地方留下一个奇怪的小空间。我做错了什么还是一个错误?

【问题讨论】:

    标签: swift swiftui widgetkit ios16 xcode14


    【解决方案1】:

    我也面临这个问题。显然,内联小部件图标有大小限制。可调整大小不起作用,因此文件本身有大小限制。任何地方都没有这方面的文档,所以我还没有数字。

    更新:使用大小为 145x145 的 PNG 似乎可以解决问题。

    【讨论】:

    • 如果我使用 png,则根本不会渲染小部件,不幸的是只显示加载块
    • 需要检查的几件事:PNG是否具有背景透明度?尺寸是 145x145 还是更小?
    【解决方案2】:

    您将不得不使用Label 来渲染带有文本的图像。 HStack 不会在那里工作。

    Label {
        Text("My Static Title")
            .foregroundColor(.white)
    } icon: {
        Image("mysymbol.car")
            .resizable()
            .frame(width: 12, height: 21, alignment: .center)
            .foregroundColor(.white)
    } 
    

    【讨论】:

    • 谢谢,但是虽然这是一种更清洁的方法,但它仍然无法正常工作,奇怪的是,它可以在模拟器上工作并预览 hstack 也可以做到的地方
    • @Dave19 你能分享你的整个代码,包括入口视图吗?
    【解决方案3】:

    .png-文件上绘制您的符号,将其包含在小部件的捆绑包中,并通过此.png-文件加载图像。

    我可以向您保证,加载.png-文件对我有用。正如您在对@swiftyboi 的回答的评论中提到的那样,可能还有另一个问题对您不起作用。

    .inlineAccessory 对图像有选择性。我发现它确实加载了 SFSymbol 图像(通过Image(systemName: String))以及一些但不是所有格式的捆绑图像。但是,它忽略了使用Path 绘制的图像,因此它也忽略了自定义符号并不令我感到惊讶。

    它似乎也忽略了所有格式信息。它只使用它找到的第一个图像和第一个文本并按此顺序显示它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-26
      • 2021-01-28
      • 1970-01-01
      • 2017-09-11
      • 2013-03-23
      • 2016-01-14
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多