在ViewController中具有自动调整文本大小

时间:2018-09-12 12:04:37

标签: ios swift uiviewcontroller label autosize

有人可以告诉我为什么这段代码不能自动调整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) 
}

2 个答案:

答案 0 :(得分:1)

要使其自动调整大小,您必须为其设置一个left / lead和right / trailing约束,或固定宽度

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

答案 1 :(得分:0)

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