代码之家  ›  专栏  ›  技术社区  ›  Noodledew

在viewcontroller中自动调整文本大小

  •  0
  • Noodledew  · 技术社区  · 7 年前

    有人能告诉我为什么这段代码不能自动调整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 回复  |  直到 7 年前
        1
  •  1
  •   Shehata Gamal    7 年前

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

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