我们目前正在使用SwiftUI的Twitter式客户端,并且必须将HTML内容转换为defaults to
。因此,我们使用Atributika来设置HTML标签的样式。它似乎工作正常,但是当我们尝试显示内容时,文本只会覆盖其他内容。我们认为这是因为它不尊重其父代的大小,但可能还有其他原因。
我们将如何解决?有没有更好的方法可以在SwiftUI中呈现HTML内容,而无需使用WKWebViews,因为那样会导致性能下降?
我们缺少什么吗?
谢谢。
我们的代码:
NetworkView.swift
"""[Summary]
:param [ParamName]: [ParamDescription], defaults to [DefaultParamVal]
:type [ParamName]: [ParamType](, optional)
...
:raises [ErrorType]: [ErrorDescription]
...
:return: [ReturnDescription]
:rtype: [ReturnType]
"""
StatusView.swift
NSAttributedString
AttributedTextView.swift
struct NetworkView: View {
@ObservedObject var timeline = NetworkViewModel()
private let size: CGFloat = 300
private let padding: CGFloat = 10
private let displayPublic: Bool = true
var body: some View {
List {
Section {
NavigationLink(destination: Text("F").padding()) {
Label("Announcements", systemImage: "megaphone")
}
NavigationLink(destination: Text("F").padding()) {
Label("Activity", systemImage: "flame")
}
}
.listStyle(InsetGroupedListStyle())
Section(header:
Picker(selection: self.$timeline.type, label: Text("Network visibility")) {
Text("My community").tag(TimelineScope.local)
Text("Public").tag(TimelineScope.public)
} .pickerStyle(SegmentedPickerStyle())
.padding(.top)
.padding(.bottom, 2)) {
if self.timeline.statuses.isEmpty {
HStack {
Spacer()
VStack {
Spacer()
ProgressView(value: 0.5)
.progressViewStyle(CircularProgressViewStyle())
Text("Loading posts...")
Spacer()
}
Spacer()
}
} else {
ForEach(self.timeline.statuses, id: \.self.id) { status in
StatusView(status: status)
.buttonStyle(PlainButtonStyle())
}
}
}
}
.listStyle(GroupedListStyle())
}
}