【发布时间】:2015-07-13 09:00:03
【问题描述】:
我得到一个错误:
视图层次结构没有为约束做好准备
当我运行下面的代码时,我的每个约束都位于UIView 类中:
func addIcon(iconImage: UIImage) {
// Creating imageView
var icon = UIImageView()
icon.image = iconImage
icon.contentMode = .ScaleAspectFit
// Adding to self
self.addSubview(icon)
// Setting constraints
setTranslatesAutoresizingMaskIntoConstraints(false)
var leading = NSLayoutConstraint(
item: icon,
attribute: .Leading,
relatedBy: .Equal,
toItem: self,
attribute: .Leading,
multiplier: 1,
constant: 8)
icon.addConstraint(leading)
var centerY = NSLayoutConstraint(
item: icon,
attribute: .CenterY,
relatedBy: .Equal,
toItem: self,
attribute: .CenterY,
multiplier: 1,
constant: 0)
icon.addConstraint(centerY)
var top = NSLayoutConstraint(
item: icon,
attribute: .Top,
relatedBy: .GreaterThanOrEqual,
toItem: self,
attribute: .Top,
multiplier: 1,
constant: 8)
icon.addConstraint(top)
var bottom = NSLayoutConstraint(
item: icon,
attribute: .Bottom,
relatedBy: .GreaterThanOrEqual,
toItem: self,
attribute: .Bottom,
multiplier: 1,
constant: 8)
icon.addConstraint(bottom)
var width = NSLayoutConstraint(
item: icon,
attribute: .Width,
relatedBy: .Equal,
toItem: nil,
attribute: .NotAnAttribute,
multiplier: 1,
constant: 20)
icon.addConstraint(width)
}
有人知道我做错了什么吗?
【问题讨论】:
-
在构造函数中定义约束或覆盖布局子视图。还要检查您是否将约束添加到父级。
-
setTranslatesAutoresizingMaskIntoConstraints 必须在 crated 视图上调用。此外,您必须将约束添加到超级视图而不是
icon。
标签: ios swift autolayout constraints