添加约束后文本不会显示

Text won't show with constraints added

这是我当前的 viewdidload 和设置视图函数的代码

    override func viewDidLoad() {
        super.viewDidLoad()



        view.addSubview(bearImageView)
        view.addSubview(descriptionText)
        view.addSubview(startButton)

        setupView()

    }

    @objc private func start() {

    }

private func setupView() {
    bearImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    bearImageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
    bearImageView.widthAnchor.constraint(equalToConstant: 200).isActive = true
    bearImageView.heightAnchor.constraint(equalToConstant: 250).isActive = true

    descriptionText.topAnchor.constraint(equalTo: bearImageView.bottomAnchor, constant: 10).isActive = true
    descriptionText.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    descriptionText.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true

    startButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    startButton.topAnchor.constraint(equalTo: descriptionText.bottomAnchor, constant: 140).isActive = true
    startButton.widthAnchor.constraint(equalToConstant: 80).isActive = true
    startButton.heightAnchor.constraint(equalToConstant: 40).isActive = true
    }

bearimage 和按钮约束都工作正常(减去水平翻转 phone 但稍后会修复)但是文本只是拒绝显示。文本是以编程方式制作的,例如 let descriptionText = UITextView = {...}() 等。你们中的任何一个有想法吗?

可能图像的固有内容大小太大,以至于它正在扩展,以至于没有更多的 space 可用于 descriptionText 标签。尝试将标签的 content compression resistance priority 更新为 required 这样它就不能被 image view 压缩。

Swift 3:

descriptionText.setContentCompressionResistancePriority(UILayoutPriorityRequired, for: .vertical)

Swift 4:

descriptionText.setContentCompressionResistancePriority(.required, for: .vertical)

如果仔细观察,您会错过 UITextView 的 高度约束。如果您使用的是 UILabel 或 UITextField 它们不需要高度限制并且可以根据它的内部内容计算它们的高度但是 UITextView 不会这样做因为如果内容超过它的高度它会开始滚动那是为什么它不能根据它的内部内容设置高度,默认情况下它的高度为零。

也向您的 UITextView 添加一个 HeightConstraint。

// This will fix your problem
descriptionText.heightAnchor.constraint(equalToConstant: 120).isActive = true