在自动布局之前,我一直在通过将框架设置在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/

10-13 03:51