UILabel appear in debug view hierarchy but not in

2019-06-25 00:46发布

I have a UIView that I added in ViewController through the Interface Builder.

In my code, I create a label in this UIView every time that a button is pressed:

func addToDisplay(stringToDisplay: String) {
    let label = UILabel(frame: CGRectMake(0, 0, 10, 10))
    label.text = stringToDisplay
    label.textColor = UIColor.redColor()
    label.textAlignment = .Right
    label.sizeToFit()
    label.adjustsFontSizeToFitWidth = true
    label.minimumScaleFactor = 0.5
    label.setTranslatesAutoresizingMaskIntoConstraints(false)

    var lastLabel: UILabel?

    if displayView.subviews.count > 0 {
        lastLabel = displayView.subviews[displayView.subviews.count - 1] as? UILabel
    }

    displayView.addSubview(label)

    var viewsDictionary = ["displayView": displayView, "label": label]

    // add constraints
    if let lastLabel = lastLabel {
        viewsDictionary["lastLabel"] = lastLabel
        displayView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[label(==20)]-0-[lastLabel]", options: nil, metrics: nil, views: viewsDictionary))
    } else {
        displayView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[label(==20)]-0-|", options: nil, metrics: nil, views: viewsDictionary))
    }
    displayView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[label]-0-|", options: nil, metrics: nil, views: viewsDictionary)) 
}

When I press the button, nothing appear on my device (nor on the simulator) but when I check the view debug hierarchy, it's there. I don't understand why. Any idea?

EDIT:

Here are two screenshots:

enter image description here

enter image description here

EDIT2:

Solved by changing alpha to something different than 0...

1条回答
Explosion°爆炸
2楼-- · 2019-06-25 01:36

Well I think you need to tell the view to update constraints, write this and check:

[displayView updateConstraintsIfNeeded];

Also test that your displayView is added to self.view! Are you using Navigation Bar? If yes then is it translucent? If yes then your self.view may be starting from (0,0) and Navigation Bar is top of it. If this the case then give some x & y, say (100, 100) and check if it shows.

Let us know if this helped.

查看更多
登录 后发表回答