Swift 通过按按钮更改约束

Swift 通过按按钮更改约束,swift,uikit,Swift,Uikit,在应用程序运行时,是否有方法通过按下按钮将视图的centerXAnchor约束更改为另一个对象(带有动画) 谢谢所有的答案 首先,您需要从故事板为您的约束创建一个IBOutlet,类似于此 @IBOutlet weak var centerXConstraint: NSLayoutConstraint! 当按下按钮时,应更改约束值并更新视图布局 centerXConstraint.constant = setYourValueHere UIView.animate(withDuration:

在应用程序运行时,是否有方法通过按下按钮将视图的centerXAnchor约束更改为另一个对象(带有动画)


谢谢所有的答案

首先,您需要从故事板为您的约束创建一个
IBOutlet
,类似于此

@IBOutlet weak var centerXConstraint: NSLayoutConstraint!
当按下按钮时,应更改约束值并更新视图布局

centerXConstraint.constant = setYourValueHere
UIView.animate(withDuration: 0.3, animations: { 
   self.view.layoutIfNeeded()
})
如果要以编程方式添加约束,请删除
@IBOutlet-weak

var centerXConstraint: NSLayoutConstraint!
将视图的中心X定位指定给它

centerXConstraint = yourView.centerXAnchor.constraint(equalTo: super.view.centerXAnchor, constant: 0)
centerXConstraint.isActive = true

之后,您可以如上所述对其进行更改。

首先,您需要从故事板为您的约束创建一个
IBOutlet
,类似于此

@IBOutlet weak var centerXConstraint: NSLayoutConstraint!
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var centerXConstraintOutlet: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func buttonClickAction(_ sender: UIButton) {
        animateViewCenterXConstraint()
    }

    func animateViewCenterXConstraint() {
        UIView.animate(withDuration: 0.3) {
            self.centerXConstraintOutlet.constant = 30
            self.view.layoutIfNeeded()
        }
    }
}
当按下按钮时,应更改约束值并更新视图布局

centerXConstraint.constant = setYourValueHere
UIView.animate(withDuration: 0.3, animations: { 
   self.view.layoutIfNeeded()
})
如果要以编程方式添加约束,请删除
@IBOutlet-weak

var centerXConstraint: NSLayoutConstraint!
将视图的中心X定位指定给它

centerXConstraint = yourView.centerXAnchor.constraint(equalTo: super.view.centerXAnchor, constant: 0)
centerXConstraint.isActive = true
然后,可以如上所述对其进行更改。

1)创建与这两个对象相关的视图的centerXAnchor约束

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var centerXConstraintOutlet: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func buttonClickAction(_ sender: UIButton) {
        animateViewCenterXConstraint()
    }

    func animateViewCenterXConstraint() {
        UIView.animate(withDuration: 0.3) {
            self.centerXConstraintOutlet.constant = 30
            self.view.layoutIfNeeded()
        }
    }
}
2) 以这两个约束为例

3) 按需单击按钮即可激活和取消激活它们。

1)创建与这两个对象相关的视图的centerXAnchor约束

2) 以这两个约束为例


3) 按需单击按钮即可激活和取消激活它们。

为centerXAnchor约束声明变量,并为按钮操作赋值。您可以尝试以下方法:

var constraintOfCenterXAnchor: NSLayoutConstraint = NSLayoutConstraint()

viewDidLoad()
set
constraintOfCenterXAnchor.constant=0

按下按钮后,更改约束值并更新视图

constraintOfCenterXAnchor.constant = 30
 UIView.animate(withDuration: 0.3, animations: { 
       self.view.layoutIfNeeded()
 })

为centerXAnchor约束声明变量并为按钮操作赋值。您可以尝试以下方法:

var constraintOfCenterXAnchor: NSLayoutConstraint = NSLayoutConstraint()

viewDidLoad()
set
constraintOfCenterXAnchor.constant=0

按下按钮后,更改约束值并更新视图

constraintOfCenterXAnchor.constant = 30
 UIView.animate(withDuration: 0.3, animations: { 
       self.view.layoutIfNeeded()
 })

以视图的IBMOutlet的centerXAnchor为例,然后更改为您的CenterXanchoroOutlet.constant=someValue yourView.LayoutFneedd()以视图的IBMOutlet的CenterXanchoroOutlet.constant=someValue yourView.LayoutFneedd()为例,以编程方式执行此操作?我在哪里“连接”centerXConstraint?@VViktor您是否在使用故事板设置约束?不,我是以编程方式进行的。真的很抱歉我应该在问题中提到它。没问题,这几乎是一样的,您正在这样做以添加约束
yourView.centerXAnchor.constraint(equalTo:super.view.centerXAnchor,常量:0)。isActive=true
,对吗?谢谢,我将更新答案,并将包括以编程方式创建的约束。我将如何以编程方式进行?我在哪里“连接”centerXConstraint?@VViktor您是否在使用故事板设置约束?不,我是以编程方式进行的。真的很抱歉我应该在问题中提到它。没问题,这几乎是一样的,您正在这样做以添加约束
yourView.centerXAnchor.constraint(equalTo:super.view.centerXAnchor,常量:0)。isActive=true
,对吗?谢谢,我将更新答案,并将包括以编程方式创建的约束。相同的问题:如何以编程方式“连接”centerXConstraintOutlet?您可以查看本文相同的问题:如何“连接”centerXConstraintOutlet以编程方式?您可以查看这篇文章,我如何将constraintOfCenterXAnchor分配给UIView?
constraintOfCenterXAnchor=yourView.centerXAnchor.constraint(等式:self.view.centerXAnchor)
ConstraintoCenterXanchor.isActive=true
如何将ConstraintoCenterXanchor分配给UIView?
ConstraintoCenterXanchor=yourView.centerXAnchor.constraint(equalTo:self.view.centerXAnchor)
ConstraintoCenterXanchor.isActive=true