在自动布局之前,我一直在通过将框架设置在animateWithDuration
上来动画化背景的高度。
func setUpBackground() {
self.backgroundView.frame = CGRect(x: 0, y: 0, width: 320, height: 10)
self.backgroundView.backgroundColor = UIColorFromRGB(0x2d2d2d).CGColor
}
func AnimateBackgroundHeight() {
UIView.animateWithDuration(0.5, animations: {
self.backgroundView.frame = CGRect(x: 0, y: 0, width: 320, height: 600)
})
}
将项目转换为自动布局后,我注意到动画发生了,但是背景高度随后又恢复为原始大小/样式(界面生成器设置)。我读到,当启用自动布局时,约束将覆盖
UIView
来设置CGRect
尺寸。因此,我想知道如何在启用“自动布局”的情况下实现相同的高度变化动画效果。
最佳答案
给您的backgroundView一个高度约束,并为其创建一个IBOutlet。在代码中,修改约束的常量值。
func AnimateBackgroundHeight() {
UIView.animateWithDuration(0.5, animations: {
self.heightCon.constant = 600 // heightCon is the IBOutlet to the constraint
self.view.layoutIfNeeded()
})
}
关于ios - 快速使用自动布局时对UIView高度进行动画处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29248203/