Swift-如何将UILabel的宽度设置为其固有的内容大小,并将其转换为SwiftUI视图?

时间:2020-05-03 15:15:47

标签: swift swiftui

我在这里遇到一些代码问题。我正在尝试通过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

    }

}

0 个答案:

没有答案