У меня проблемы с некоторым кодом здесь. Я пытаюсь использовать UILabel в SwiftUI через представление UIViewRepresentable
, и эта часть работает нормально. Проблема в ширине этикетки. Мне нужно, чтобы ширина точно соответствовала длине текста, но она растягивается, чтобы заполнить весь экран. Я пытался использовать 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
}
}