UIView的动画约束(作为主视图的子视图)

时间:2016-07-16 09:17:45

标签: ios swift animation autolayout

我将拖动的视图的约束设置到故事板,以便视图覆盖整个屏幕。 (我从顶部,左侧,底部和右侧将其固定为0)。当视图出现时,我希望视图缩小。常数应该从0到20动画。

在应用程序中,它会更改常量,但不会为其设置动画。此外,在缩小的视图后面,一切都是黑色的,虽然它应该是白色的(因为在该视图后面是白色的主视图)。

override func viewDidAppear(animated: Bool) {

    UIView.animateWithDuration(2.5, animations: {
        self.leftPin.constant = 20.0
        self.topPin.constant = 20.0
        self.rightPin.constant = 20.0
        self.bottomPin.constant = 20.0
        // bg is my view I want to shrink
        self.bg.layoutIfNeeded()
        })
}

我读到这是为了"申请"对实际布局的新约束,你必须运行layoutIfNeeded()。但是上面的那些限制也没有那个功能。为什么呢?

1 个答案:

答案 0 :(得分:2)

@try this

override func viewDidAppear(animated: Bool) {

    self.leftPin.constant = 20.0
    self.topPin.constant = 20.0
    self.rightPin.constant = 20.0
    self.bottomPin.constant = 20.0

    UIView.animateWithDuration(2.5, animations: {

    self.view.layoutIfNeeded()
    })
}