我在这里遇到一些代码问题。我正在尝试通过UIViewRepresentable
视图在SwiftUI中使用UILabel,并且该部分工作正常。问题是标签的宽度。我需要宽度恰好是其中文本的长度,但是它正在伸展以填充整个屏幕。我试图将intrinsicContentSize
用作标签的框架,但是它不起作用。如果有人可以提供帮助,将不胜感激。
import SwiftUI
import UIKit
struct TextView: View {
var text = "Hello"
var body: some View {
MakeUILabel(text: text, size: 76)
}
}
struct MakeUILabel: UIViewRepresentable {
var text: String
var size: CGFloat
func makeUIView(context: Context) -> UILabel {
let view = UILabel()
return view
}
func updateUIView(_ uiView: UILabel, context: Context) {
uiView.text = text
uiView.font = UIFont(name: "HelveticaNeue-Bold", size: size)
uiView.textAlignment = .right
uiView.numberOfLines = 1
uiView.frame = CGRect(x:0, y:0, width: uiView.intrinsicContentSize.width, height: uiView.intrinsicContentSize.height)
uiView.sizeToFit()
// To see the border of the label:
uiView.layer.borderColor = UIColor.green.cgColor
uiView.layer.borderWidth = 3.0
}
}