通过动画和中心更改宽度 UIView

Change width UIView by animation and center

我有一个视图,需要通过动画将宽度从 100 更改为 200。

UIView.animate(withDuration: 5
            ,animations: {
                    self.backgroundPlaceHolderView.frame.size.width += 200
})

当运行这段代码时,我的视图改变了宽度,但我需要从中心改变宽度,但是这段代码增加了右边的视图

您应该将 backgroundPlaceHolderView 限制在 centerX 上。它可能固定在左侧。

如果您从操纵框架转移到操纵约束,我认为这会更容易、更清晰。

  1. 在 InterfaceBuilder 中(或以编程方式)将您的 UIView 水平居中。
  2. 输出宽度限制(从 100 开始)。

当您想增加 UIView 的宽度时,您可以执行以下操作;

view.layoutIfNeeded() // always make sure any pending layout changes have happened

widthConstraint.constant = 200

UIView.animate(withDuration: 0.3, animations: {
    self.view.layoutIfNeeded()
})

A​​utolayout 会为您处理剩下的事情。您的视图水平居中,因此它应该从中心展开。

如果您确实需要使用框架来完成,这里有一个代码片段:

UIView.animate(withDuration: 1, animations: {
        self.backgroudPlaceHolderView.frame.origin.x -= 100
        self.backgroudPlaceHolderView.frame.size.width += 200
    })