尝试从下往上设置UIView高度的动画,而不是自上而下

时间:2017-01-14 18:49:51

标签: ios xcode animation uiview swift3

我正在尝试将UIView的高度从1px的高度设置为41px的高度。它现在有用了,但它不是从底部到顶部的动画视图,而是从顶部到底部。

以下是我用来使其上下动画的代码

    func animateBackgroundHeightUp() {
    print("animate")
    UIView.animate(withDuration: 0.5, animations: {
        self.personBg.frame.size.height = 41
    })
}

func animateBackgroundHeightDown() {
    print("animate")
    UIView.animate(withDuration: 0.5, animations: {
        self.personBg.frame.size.height = 1
    })
}

我想我必须弄清楚如何设置原点y,但我似乎无法找到一个快速的3例子。

修改

func animateBackgroundHeightUp() { print("animate") UIView.animate(withDuration: 0.5, animations: { self.personBg.frame.size.height = 41 self.personBg.frame.origin.y = -41 }) } 

func animateBackgroundHeightDown() { print("animate") UIView.animate(withDuration: 0.5, animations: { self.personBg.frame.size.height = 1 self.personBg.frame.origin.y = 41 }) }

最终为我工作的是这种配置。但我很困惑为什么原点需要20?

   func animateBackgroundHeightUp() {
    print("animate")
    UIView.animate(withDuration: 0.25, animations: {
        self.personBg.frame.size.height = 41
        self.personBg.frame.origin.y = 20
    })
}

func animateBackgroundHeightDown() {
    print("animate")
    UIView.animate(withDuration: 0.25, animations: {
        self.personBg.frame.size.height = 1
        self.personBg.frame.origin.y = 59.9
    })
}

通过在负载上打印出原始y的值来计算59.9数字。

1 个答案:

答案 0 :(得分:2)

iOS视图中的原点是屏幕的左上角。视图的框架将原点固定在左上角,高度表示它向下延伸的距离。

如果你增加一个视图的高度,它的顶部不会移动 - 它的底部会向下延伸。

如果您希望视图看起来向上增长,则需要增加高度,同时减少原点数量。