将NSConstraints从Objective-C转换为Swift

iPr*_*mIt -3 constraints objective-c nslayoutconstraint swift

我希望将基于Objective-c的通用应用程序转换为Swift项目.到目前为止,我已经能够交换大部分代码,但是我在翻译以下内容时遇到了问题:

NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.contentView
                                                                  attribute:NSLayoutAttributeLeading
                                                                  relatedBy:0
                                                                     toItem:self.view
                                                                  attribute:NSLayoutAttributeLeft
                                                                 multiplier:1.0
                                                                   constant:0];
[self.view addConstraint:leftConstraint];

NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:self.contentView
                                                                   attribute:NSLayoutAttributeTrailing
                                                                   relatedBy:0
                                                                      toItem:self.view
                                                                   attribute:NSLayoutAttributeRight
                                                                  multiplier:1.0
                                                                    constant:0];
[self.view addConstraint:rightConstraint];
Run Code Online (Sandbox Code Playgroud)

我还必须更改此代码:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

Swift中有类似的方法吗?

任何帮助将不胜感激.在此先感谢所有回复的人.:)

zta*_*tan 6

 let leftConstranint = NSLayoutConstraint(item: self.contentView, attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1.0, constant: 0)

 self.view.addConstraint(leftConstranint)

 let rightConstraint = NSLayoutConstraint(item: self.contentView, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Right, multiplier: 1.0, constant: 0)

 self.view.addConstraint(rightConstraint)
Run Code Online (Sandbox Code Playgroud)

.Leading,.Left,.Trailing.Right来自枚举NSLayoutAttribute.功能来自UIGestureRecognizerDelegate:

func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
      return false
}
Run Code Online (Sandbox Code Playgroud)

使用制图,您可以在以下内容中执行上述Autolayout:

layout(self.contentView, self.view) { (contentView, view) -> () in
        contentView.leading == view.left
        contentView.trailing == view.right
 }
Run Code Online (Sandbox Code Playgroud)

使用Snap,您可以执行以下Autolayout:

 self.contentView.snp_makeConstraints { maker in
        maker.leading.equalTo(self.view.snp_left)
        maker.trailing.equalTo(self.view.snp_right)
 }
Run Code Online (Sandbox Code Playgroud)

Cartography更像是一种在代码中制定约束的数学方法.换句话说,Snap更像是一种用英语描述词汇约束的方式.

与视觉语言格式(编码普通字符串的约束),双方CartographySnap可以利用代码完成的XCode中.