我想在其superView
的右上角放置一个标签,并在其底部添加8pt
尾部和10pt
这是我的代码:
let label = UILabel(frame: CGRectZero)
label.text = "text goes here"
label.textColor = UIColor.whiteColor()
label.translatesAutoresizingMaskIntoConstraints = false
label.numberOfLines = 0
label.textAlignment = .Right
label.backgroundColor = UIColor.blackColor()
label.font = UIFont(name: "TheSans-Plain", size: 17)
imageTitleContainer.addSubview(label)
let label_constraint_H:Array = NSLayoutConstraint.constraintsWithVisualFormat("H:|-(>=8)-[label]-(8)-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: ["label":label])
let label_constraint_V:Array = NSLayoutConstraint.constraintsWithVisualFormat("V:[label]-(10)-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: ["label":label])
imageTitleContainer.addConstraints(label_constraint_H)
imageTitleContainer.addConstraints(label_constraint_V)`
但我在
Unable to simultaneously satisfy constraints
中得到console
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7ff55acf24c0 H:[UILabel:0x7ff55acf1af0'text goes here']-(8)-| (Names: '|':UIView:0x7ff55acbf430 )>
注意:
0x7ff55acbf430
是我在代码中的imageTitleContainer
更新:其他限制:
"<NSLayoutConstraint:0x7ff55accdc80 H:|-(0)-[UIView:0x7ff55acbf430] (Names: '|':UIView:0x7ff55acca080 )>",
"<NSLayoutConstraint:0x7ff55accdcd0 H:[UIView:0x7ff55acbf430]-(0)-| (Names: '|':UIView:0x7ff55acca080 )>",
"<NSLayoutConstraint:0x7ff55acf2450 H:|-(>=8)-[UILabel:0x7ff55acf1af0'text goes here'] (Names: '|':UIView:0x7ff55acbf430 )>",
"<NSLayoutConstraint:0x7ff55acf24c0 H:[UILabel:0x7ff55acf1af0'text goes here']-(8)-| (Names: '|':UIView:0x7ff55acbf430 )>",
"<NSLayoutConstraint:0x7ff55adb3830 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7ff55acca080(0)]>"
)
最佳答案
尝试降低您的约束之一的优先级,例如
H:|-(>=8@999)-[label]-(8)-|
必须这样做以允许UICollectionView进行其布局工作。请注意名为
UIView-Encapsulated-Layout-Width
的零宽度约束,它会破坏您的布局。
关于ios - 自动布局将尝试通过打破约束来恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34390179/