在viewcontroller中自动调整文本

问题描述 投票:0回答:2

有人能告诉我为什么这段代码不会自动调整descLabel中的文本吗?我试图将numberOfLines设置为0并设置了lineBreakMode,但这几乎没有解决我的问题。这种方法在ViewController中是不可能的,还是我做了一些完全错误的事情?

class SingleEventViewController: UIViewController {

var thisEvent: Event
var eventDescription: String?

let descLabel: UILabel = {
    let label = UILabel()
    label.font = UIFont.systemFont(ofSize: 16)
    label.text = "Beschreibung"
    label.textColor = .black
    label.numberOfLines = 0
    label.lineBreakMode = .byWordWrapping
    return label
}()  

let participateButton: UIButton = {
    let button = UIButton()
    button.backgroundColor = CalendarSettings.Colors.buttonBG
    button.setTitle("Teilnehmen", for: .normal)
    button.setTitleColor(CalendarSettings.Colors.darkRed, for: .normal)
    return button
}()

//MARK: - Init & View Loading
init(event: Event) {
    thisEvent = event
    super.init(nibName: nil, bundle: nil)
    setupDefaultValues()
}

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .white
    applyDefaultValues()
    setupViews()
    confBounds()
}

//MARK: - Setup
func setupDefaultValues() {
    eventDescription = thisEvent.eventDescription
}

func applyDefaultValues() {
    descLabel.text = eventDescription
}

func setupViews() {
    view.addSubview(descLabel)
    view.addSubview(participateButton)

    let tabbarHeight = self.tabBarController?.tabBar.frame.height ?? 0
    descLabel.anchor(top: titleLabel.bottomAnchor, left: view.leftAnchor, bottom: nil, right: nil, paddingTop: 5, paddingLeft: 10, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
    participateButton.anchor(top: nil, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: tabbarHeight, paddingRight: 0, width: 0, height: 50) 
}
ios swift uiviewcontroller label autosize
2个回答
1
投票

要使其自动调整大小,必须为其指定左/前导和右/尾约束或固定宽度

descLabel.anchor(top: titleLabel.bottomAnchor, left: view.leftAnchor, bottom: nil, rightview.rightAnchor, paddingTop: 5, paddingLeft: 10, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)

0
投票

如果是您尝试更改的字体大小以使其适合标签,请尝试adjustFontSizeToWidth,但如果是要调整大小的标签,请尝试sizeToFit()。

© www.soinside.com 2019 - 2024. All rights reserved.