swiftUI中带属性字符串的高度问题
属性化视图未正确更新属性化字符串的布局。下面是我的代码 我已经为SwiftUI创建了属性标签swiftUI中带属性字符串的高度问题,swiftui,nsattributedstring,uiviewrepresentable,Swiftui,Nsattributedstring,Uiviewrepresentable,属性化视图未正确更新属性化字符串的布局。下面是我的代码 我已经为SwiftUI创建了属性标签 import SwiftUI class ViewLabel : UIView { private var label = UILabel() override init(frame: CGRect) { super.init(frame:frame) self.addSubview(label) label.numberOfLines
import SwiftUI
class ViewLabel : UIView {
private var label = UILabel()
override init(frame: CGRect) {
super.init(frame:frame)
self.addSubview(label)
label.numberOfLines = 0
label.autoresizingMask = [.flexibleWidth, .flexibleHeight]
label.lineBreakMode = .byWordWrapping
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
func setString(_ attributedString:NSAttributedString) {
self.label.attributedText = attributedString
}
}
struct AHAttributedTextLabel: UIViewRepresentable {
var attributedString:NSAttributedString
func makeUIView(context: Context) -> ViewLabel {
let view = ViewLabel(frame:CGRect.zero)
return view
}
func updateUIView(_ uiView: ViewLabel, context: UIViewRepresentableContext<AHAttributedTextLabel>) {
uiView.setString(attributedString)
}
}
struct AHAttributedLabel_Previews: PreviewProvider {
static var previews: some View {
AHAttributedTextLabel(attributedString: NSAttributedString(string: "Test"))
}
}
}
显示列表的内容视图
import SwiftUI
struct AHVitalGraphContentView: View {
@ObservedObject var viewModel: AHVitalsGraphViewModel
var body: some View {
VStack{
List(self.viewModel.vitalGroup.vitals,id:\.vitalId) { vital in
AHAttributtedTitleSubtitleView(title: vital.attributedString, subTitle: vital.recorderDetails)
}
}.navigationBarTitle(Text(self.viewModel.vitalGroup.latestReadings.vitalName ?? ""), displayMode: .inline)
}
}
下面是附加的问题截图。你可以看到。。。。在列表单元格的顶部
提供的代码没有给出屏幕截图结果,实际上,不可测试。。。提供最少的可测试示例。在屏幕截图中忽略图形,我已从类AHVitalGraphContentView中删除了图形的代码
import SwiftUI
struct AHVitalGraphContentView: View {
@ObservedObject var viewModel: AHVitalsGraphViewModel
var body: some View {
VStack{
List(self.viewModel.vitalGroup.vitals,id:\.vitalId) { vital in
AHAttributtedTitleSubtitleView(title: vital.attributedString, subTitle: vital.recorderDetails)
}
}.navigationBarTitle(Text(self.viewModel.vitalGroup.latestReadings.vitalName ?? ""), displayMode: .inline)
}
}