Text(text)
.textStyleCaption2(lineLimit: 2)
.lineBreakMode(.byCharWrapping)
.fixedSize(horizontal: false, vertical: true)
struct InternalLabelView: UIViewRepresentable {
var text: String
@Binding var dynamicHeight: CGFloat
func makeUIView(context: Context) -> UILabel {
let label = UILabel()
label.numberOfLines = 2
label.lineBreakMode = .byCharWrapping
label.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
label.font = .systemFont(ofSize: 20, weight: .regular)
label.adjustsFontSizeToFitWidth = false
return label
}
func updateUIView(_ uiView: UILabel, context: Context) {
uiView.text = text
DispatchQueue.main.async {
dynamicHeight = uiView.sizeThatFits(CGSize(width: uiView.bounds.width, height: CGFloat.greatestFiniteMagnitude)).height
}
}
}
使用 SwiftUI 的 Text 實現方法,lineBreakMode 並沒有正確生效。