.unredacted() SwiftUI - 占位符

问题描述

首先,我是 SwiftUI 的新手,如果我不知道确切的结构或最佳实践,我深表歉意。其次,我已经离开编程多年,但需要更好地理解 Swift 语言。

系统:
OSX:11.3.1
XCode 12.5
iPhone:14.5.1

我目前正在努力使我的代码获得一致的结果。我正在使用 WidgetKit/WidgetBundle 来做一些非常基本的东西,比如显示文本。就是这样。

然而,即使在模拟器中它工作正常(未编辑),我也面临着设备上的编辑视图。下面是一个非常基本的带有文本的 vstack。我添加了 unredacted() 函数,我认为该函数会强制显示文本。

                vstack {
                    Text("TRANSPONDER")
                        .kerning(3.0)
                        .font(.system(size: 20,weight: .light,design: .rounded))
                        **.unredacted()**
                        .frame(maxWidth: .infinity,maxHeight: .infinity)
                        .clipped()
                        .padding(.all,0)
                        .foregroundColor(Color.white)
                        .background(Color(.displayP3,red: 49.1/255,green: 70.97/255,blue: 85/255))
                    Spacer()
                }
            

在我的 TimelineProvider() 下面的代码

struct TransponderGA_TimelineProvider: TimelineProvider {

typealias Entry = TransponderGA_Entry

func placeholder(in context: Context) -> TransponderGA_Entry {
    let entry = TransponderGA_Entry(date: Date(),transpondergacode: TransponderCodeGA.init(transponderGACode: "123",transponderGAText: "dswer"))
    return entry
}

func getSnapshot(in context: Context,completion: @escaping (TransponderGA_Entry) -> Void) {
    let entry = TransponderGA_Entry(date: Date(),transpondergacode: TransponderCodeGA.init(transponderGACode: "1200",transponderGAText: "GA Airspace"))
    completion(entry)
}

func getTimeline(in context: Context,completion: @escaping (Timeline<TransponderGA_Entry>) -> Void) {
    let currentDate = Date()
    let refreshDate = Calendar.current.date(byAdding: .second,value: 10,to: currentDate)!
    
    TransponderGA_Manager.getGATransponder() { (transgacode) in
        guard let tcga = transgacode else { return }
        
        let entry = TransponderGA_Entry(date: currentDate,transpondergacode: tcga)
        let timeline = Timeline(entries: [entry],policy: .after(refreshDate))
        completion(timeline)
    }
}

出现以下结果。但是,如果我将完全相同的代码与小部件系列中的另一个小部件一起使用,它可以完美运行。

PlaceHolder Image

正如您所看到的,这次在另一个小部件中使用相同的代码在设备和模拟器上都可以正常工作。我完全不知道为什么它可以在 1 个小部件中工作,而另一个小部件完全隐藏了设备上的内容

有没有人经历过这样的事情?

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)