[Ios] 当使用swift自动布局时,动画UIView高度


Answers

也为那些谁发现这个帖子试图找出为什么一个过渡改变视图的大小将是块或不干净,你只需要找到负责的看法,并调用UIView.animateWithDuration块内的UIView.animateWithDuration self.view.layoutIfNeeded() 。 我用头撞墙,试图用不同的东西来制约框架,直到意识到self.view.layoutIfNeeded()将处理使转换平滑,只要你把它放在正确的位置。

Question

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

将我的项目转换为自动布局后,我注意到动画发生,但后面的高度快速恢复为原始大小/样式(界面生成器设置)。 我读到,当自动布局打开时,约束将覆盖用CGRect设置UIView维度。

所以我想知道如何去实现与自动布局ON相同的高度变化动画效果。