Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 以编程方式更新布局约束,而不使用IBOutlets-Swift_Ios_Swift_Autolayout_Hamburger Menu - Fatal编程技术网

Ios 以编程方式更新布局约束,而不使用IBOutlets-Swift

Ios 以编程方式更新布局约束,而不使用IBOutlets-Swift,ios,swift,autolayout,hamburger-menu,Ios,Swift,Autolayout,Hamburger Menu,当点击“打开”按钮时,我试图通过改变左锚约束来制作一个滑出菜单。我见过有人在约束上使用IBOutlets,但我使用的视图完全是以编程方式创建的,因此我无法这样做 视图最初位于屏幕外,所以我想我可以在点击“打开”按钮时更改约束条件,但下面的代码没有任何作用 @objc func slideMenu() { sideMenu.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true vie

当点击“打开”按钮时,我试图通过改变左锚约束来制作一个滑出菜单。我见过有人在约束上使用IBOutlets,但我使用的视图完全是以编程方式创建的,因此我无法这样做

视图最初位于屏幕外,所以我想我可以在点击“打开”按钮时更改约束条件,但下面的代码没有任何作用

@objc func slideMenu() {
    sideMenu.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
    view.setNeedsUpdateConstraints()
}

有没有办法在不使用IBOutlet的情况下更新左锚定约束?

将约束存储在变量中并更改常量,并在需要时调用
LayoutIfNeed

// Declare this along with the other variables in your class
var constraintVariable: NSLayoutConstraint!

.
.
.

// Where you set your constraints. Store the constraint to be animated in the variable and make it active
// Your other constraints
constraintVariable = sideMenu.leftAnchor.constraint(equalTo: view.leftAnchor, constant: someNegativeValue);
constraintVariable.isActive = true

.
.
.

@objc func slideMenu() {
    UIView.animate(withDuration: suitableDuration) {
        constraintVariable.constant = requiredValue
        view.setNeedsLayout()
        view.layoutIfNeeded()
    }
}

那么,我是否使用
constraintVariable
来设置视图的初始约束?使视图远离屏幕的初始约束?@yambo查看答案中的第二行代码。你应该能够找到合适的位置。我也提供了适当的评论。很抱歉我的误解。在设置初始约束的设置功能中,我将
leftAnchor
约束设置为屏幕外,以便隐藏视图。正如您的评论所说,我添加了一行代码来设置约束变量,并用您提供的代码更改了@objc函数,但当点击按钮时,什么也没有发生。@yambo-ah我知道了。设置约束时。将常量值设置为某个负值,就像现在一样。除此之外,不要将其设置为活动,而是将其存储在变量中并使用该变量将其设置为活动。谢谢!再次为误会感到抱歉。这很好用