Swift - Как я могу установить ширину UILabel в его размер содержимого intrinsi c, а также преобразовать его в SwiftUI View? - PullRequest
0 голосов
/ 03 мая 2020

У меня проблемы с некоторым кодом здесь. Я пытаюсь использовать 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

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...