UILabel出现在调试视图层次结构中,但不出现在应用程序中

时间:2015-04-18 04:30:17

标签: ios swift autolayout uilabel

我有一个UIView,我通过Interface Builder在ViewController中添加了它。

在我的代码中,每次按下按钮时,我都会在此UIView中创建一个标签:

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)) 
}

当我按下按钮时,我的设备上没有任何内容(模拟器上),但是当我检查视图调试层次结构时,它就在那里。我不明白为什么。有什么想法吗?

修改

以下是两个屏幕截图:

enter image description here

enter image description here

EDIT2:

通过将alpha更改为不同于0的内容来解决...

1 个答案:

答案 0 :(得分:0)

我认为你需要告诉视图更新约束,写下来并检查:

[displayView updateConstraintsIfNeeded];

同时测试您的displayView是否已添加到self.view! 您使用的是导航栏吗?如果是,那么它是translucent吗?如果是,那么您的self.view可能从(0,0)开始,导航栏就是它的顶部。如果是这种情况,那么给一些 x& y ,说(100,100)并检查它是否显示。

如果这有帮助,请告诉我们。