存在冲突约束的问题

时间:2016-02-29 14:59:16

标签: swift autolayout nslayoutconstraint

我不确定我在这里缺少什么,我已经在这里工作了几个小时,看着不断的教程,我仍然遇到冲突约束的问题。基本上我有一个按钮,在这个按钮上我想添加一个新的视图,它是按钮的中心和相同的大小。当我去应用约束时,它告诉我存在冲突的约束,而我只是不理解这里可能存在冲突的东西。

//Create a new view
let selectBorderView = UIView();
//Guarantee there are no constraints attached to it
NSLayoutConstraint.deactivateConstraints(selectBorderView.constraints);
//Add the new view to the button
sender.addSubview(selectBorderView);

//Create constraint selectBorderView.width = button.width        
let constraintEW = NSLayoutConstraint(item: selectBorderView, attribute: .Width, relatedBy: .Equal, toItem: selectBorderView.superview, attribute: .Width, multiplier: 1, constant: 0);
//Create constraint selectBorderView.height = button.height        
let constraintEH = NSLayoutConstraint(item: selectBorderView, attribute: .Height, relatedBy: .Equal, toItem: selectBorderView.superview, attribute: .Height, multiplier: 1, constant: 0);
//Create constraint selectBorderView.centerX = button.centerX        
let constraintCX = NSLayoutConstraint(item: selectBorderView, attribute: .CenterX, relatedBy: .Equal, toItem: selectBorderView.superview!, attribute: .CenterX, multiplier: 1, constant: 0);
//Create constraint selectBorderView.centerY = button.centerY
let constraintCY = NSLayoutConstraint(item: selectBorderView, attribute: .CenterY, relatedBy: .Equal, toItem: selectBorderView.superview, attribute: .CenterY, multiplier: 1, constant: 0);

//add the constraints to the button        
selectBorderView.superview!.addConstraint(constraintEW);
selectBorderView.superview!.addConstraint(constraintEH);
selectBorderView.superview!.addConstraint(constraintCX);
selectBorderView.superview!.addConstraint(constraintCY);

1 个答案:

答案 0 :(得分:1)

您可能会看到类似以下内容的错误消息:

  

无法同时满足约束条件。可能至少下列列表中的一个约束是您不想要的约束。试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它。 (注意:如果你看到你不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性的文档translatesAutoresizingMaskIntoConstraints)

如果您看到该警告,则应将translatesAutoresizingMaskIntoConstraints设置为false

selectBorderView.translatesAutoresizingMaskIntoConstraints = false