Ios 通过动画和中心更改视图的宽度

Ios 通过动画和中心更改视图的宽度,ios,swift,uiviewanimation,Ios,Swift,Uiviewanimation,我有一个视图,需要通过动画将宽度从100更改为200 UIView.animate(withDuration: 5 ,animations: { self.backgroundPlaceHolderView.frame.size.width += 200 }) 运行此代码时,我的视图更改宽度,但我需要从中心更改宽度,但此代码将视图增加到右侧 您应该将背景占位符视图约束在centerX上。它可能定位在左侧。如果您从操纵框架移动到操纵

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

UIView.animate(withDuration: 5
            ,animations: {
                    self.backgroundPlaceHolderView.frame.size.width += 200
})
运行此代码时,我的视图更改宽度,但我需要从中心更改宽度,但此代码将视图增加到右侧

您应该将背景占位符视图约束在centerX上。它可能定位在左侧。

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

  • 在InterfaceBuilder(或以编程方式)中,水平居中放置
    UIView
  • 导出宽度约束(从100开始)
  • 当您想增加
    ui视图的宽度时,可以执行以下操作:

    view.layoutIfNeeded() // always make sure any pending layout changes have happened
    
    widthConstraint.constant = 200
    
    UIView.animate(withDuration: 0.3, animations: {
        self.view.layoutIfNeeded()
    })
    

    Autolayout将为您处理其余的内容。您的视图水平居中,因此它应该从中心展开。

    如果您确实需要使用框架进行展开,下面是一个代码片段:

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

    你能给我们展示一下动画现在的样子吗?您应该将视图居中对齐,以便从中心设置动画。您还应该减少视图的X位置。@Rakeshashstri updatequestion@RasoulMiri由于您正在使用框架,请尝试sagar的建议。