gpt4 book ai didi

ios - 为宽度约束设置动画时, subview 不会在其父 View 中居中

转载 作者:行者123 更新时间:2023-11-29 01:39:53 26 4
gpt4 key购买 nike

我有一个容器和居中的 child 。

// Center constraint added to container
NSLayoutConstraint(item: childView, attribute: .CenterX, relatedBy: .Equal, toItem: containerView, attribute: .CenterX, multiplier: 1, constant: 0)

// Width constraint added to child
NSLayoutConstraint(item: childView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: width)

所有 View 布局后,它们的位置是正确的。但是,当我开始为 child 的宽度变化设置动画时,它会失去其居中位置并在动画结束时逐渐回到中心位置。

这是我作为子类的一部分启动动画的方法

  widthConstraint?.constant = widthNew
UIView.animateWithDuration(2, animations: {
self.superview?.layoutIfNeeded()
}) { (completed: Bool) in
if completed {
print("done")
}
}

这是我开始制作动画之前的初始状态。

enter image description here

这是跳跃发生并且失去居中的时候。

enter image description here

但在完成时,它会移回中心。

enter image description here

如何确保它始终居中?

最佳答案

我所做的是:

class ViewController: UIViewController {

@IBOutlet weak var widthConstraint: NSLayoutConstraint!
@IBOutlet weak var animatedView: UIView!

override func viewDidLoad()
{
super.viewDidLoad()
}
@IBAction func Btn1(sender: AnyObject) {

widthConstraint?.constant = 20
UIView.animateWithDuration(2, animations: {
self.animatedView?.layoutIfNeeded()
}) { (completed: Bool) in
if completed {
print("done")
}
}
}

}

约束是:

enter image description here这是工作代码,所以您可以尝试在 View 之外更改 View 约束。然后我们就会得到我们的问题。

编辑

我将这个 View 用作动画 View 只是为了看看当您在 View 中设置自己的约束时它是怎样的。

public class AnimatedView: UIView {

public var widthConstraint: NSLayoutConstraint!

public required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

public func animate()
{
widthConstraint?.constant = 20
UIView.animateWithDuration(2, animations: {
self.superview?.layoutIfNeeded()
}) { (completed: Bool) in
if completed {
print("done")
}
}
}
}

从它的 super View 设置它的 widthConstraint 并从那里触发动画。这也有效。

关于ios - 为宽度约束设置动画时, subview 不会在其父 View 中居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32531115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com