IOS 8高度约束动画未按预期工作

时间:2015-07-17 22:06:37

标签: swift xcode6 storyboard autolayout

我试图在视图顶部设置黑色标签的高度约束,我在下面的白色标签上设置了一个约束,用于设置与上面标签的距离。然后我尝试使用以下代码设置高度动画更改黑色标签(我已尝试在 UIView.animateWithDuration self.height 的代码>阻止:

@IBOutlet weak var height: NSLayoutConstraint!

@IBAction func resize(sender: AnyObject) {

    if self.collapsed {
        self.height.constant = 100
    } else {
        self.height.constant = 0
    }

    UIView.animateWithDuration(2) {
        [unowned self] in
        self.view.layoutIfNeeded()
    }

    collapsed = !collapsed
}

通过按下按钮来调用 resize 动作。有一些动画,但不是我所期望的:标签立即将其大小更改为0或100.当它变为0时,第二个标签慢慢向上移动到新的位置。当黑色标签高度设置为100时,它将从第二个标签上方的屏幕顶部显示,而不是它们都向下移动到其最终位置。黑色标签在视图顶部也有一个约束,所以我不明白为什么黑色标签从顶部向下流动。

screenshot

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我重新创建了你的例子并对其进行了一些研究。

我设法解决了"扩展"动画blackLabel.clipsToBounds = true,但"缩小"动画仍然是跳跃的。 UILabel似乎是一个问题,如herehere所述。

我能想到的最简单的解决方法就是用相同大小的UIView包裹你的blackLabel,然后用它来设置它的高度。不要忘记设置wrapperView.clipsToBounds = true。这应该有用。