添加约束时不会显示文本

时间:2017-09-27 19:57:35

标签: ios swift constraints nslayoutconstraint swift4

所以这是我目前的viewdidload代码和setup view func

    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和按钮约束都可以正常工作(减去水平翻转手机,但稍后会解决这个问题)但是文本只是拒绝显示。文本以编程方式制作,使用descriptionText = UITextView = {...}()等等。你们有什么想法?

2 个答案:

答案 0 :(得分:1)

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

也可以在UITextView中添加HeightConstraint。

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

答案 1 :(得分:0)

图像的内在内容大小可能很大,以至于descriptionText标签没有更多可用空间。尝试将标签的内容抗压优先级更新为必需,以便图片视图无法对其进行压缩。

斯威夫特3:

descriptionText.setContentCompressionResistancePriority(UILayoutPriorityRequired, for: .vertical)
斯威夫特4:

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