我有一个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))
}
当我按下按钮时,我的设备上没有任何内容(模拟器上),但是当我检查视图调试层次结构时,它就在那里。我不明白为什么。有什么想法吗?
修改
以下是两个屏幕截图:
EDIT2:
通过将alpha更改为不同于0的内容来解决...
答案 0 :(得分:0)
我认为你需要告诉视图更新约束,写下来并检查:
[displayView updateConstraintsIfNeeded];
同时测试您的displayView
是否已添加到self.view
!
您使用的是导航栏吗?如果是,那么它是translucent
吗?如果是,那么您的self.view可能从(0,0)开始,导航栏就是它的顶部。如果是这种情况,那么给一些 x& y ,说(100,100)并检查它是否显示。
如果这有帮助,请告诉我们。