通过动画和中心更改宽度 UIView
Change width UIView by animation and center
我有一个视图,需要通过动画将宽度从 100 更改为 200。
UIView.animate(withDuration: 5
,animations: {
self.backgroundPlaceHolderView.frame.size.width += 200
})
当运行这段代码时,我的视图改变了宽度,但我需要从中心改变宽度,但是这段代码增加了右边的视图
您应该将 backgroundPlaceHolderView 限制在 centerX 上。它可能固定在左侧。
如果您从操纵框架转移到操纵约束,我认为这会更容易、更清晰。
- 在 InterfaceBuilder 中(或以编程方式)将您的
UIView
水平居中。
- 输出宽度限制(从 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()
})
Autolayout 会为您处理剩下的事情。您的视图水平居中,因此它应该从中心展开。
如果您确实需要使用框架来完成,这里有一个代码片段:
UIView.animate(withDuration: 1, animations: {
self.backgroudPlaceHolderView.frame.origin.x -= 100
self.backgroudPlaceHolderView.frame.size.width += 200
})
我有一个视图,需要通过动画将宽度从 100 更改为 200。
UIView.animate(withDuration: 5
,animations: {
self.backgroundPlaceHolderView.frame.size.width += 200
})
当运行这段代码时,我的视图改变了宽度,但我需要从中心改变宽度,但是这段代码增加了右边的视图
您应该将 backgroundPlaceHolderView 限制在 centerX 上。它可能固定在左侧。
如果您从操纵框架转移到操纵约束,我认为这会更容易、更清晰。
- 在 InterfaceBuilder 中(或以编程方式)将您的
UIView
水平居中。 - 输出宽度限制(从 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()
})
Autolayout 会为您处理剩下的事情。您的视图水平居中,因此它应该从中心展开。
如果您确实需要使用框架来完成,这里有一个代码片段:
UIView.animate(withDuration: 1, animations: {
self.backgroudPlaceHolderView.frame.origin.x -= 100
self.backgroudPlaceHolderView.frame.size.width += 200
})