按钮动画在swift中无法正常工作

时间:2016-06-27 07:40:50

标签: ios iphone xcode swift animation

我正在使用Xcode快速制作应用程序,我遇到了一些按钮动画的麻烦。 这是我的情况:

enter image description here

我在屏幕中间有三个按钮,我还添加了一些约束。

我需要的是,当点击按钮时,它会到达屏幕顶部,就像第二张带动画的照片一样:

enter image description here

我试过这个:

UIView.animateWithDuration(1, delay: 0, options: [], animations: {
        self.Button2.center.y = 18 + self.Button2.frame.height/2

        }, completion: nil)

但是会发生的是屏幕底部出现的按钮滑动到第一张照片的位置。它不尊重我在动画中写的位置。这可能是由于这些限制吗?因为我是纵向和横向居中的。

你能帮助我让它发挥作用吗?

3 个答案:

答案 0 :(得分:1)

当您使用自动布局约束时,您永远不会对动画中的按钮框架进行更改,例如代码:您必须始终使用约束。

这是一个通用的例子:

myButtonCenterYConstraint.constant = 200.0
myButton.layoutIfNeeded()
UIView.animateWithDuration(Double(0.5), animations: {
        myButtonCenterYConstraint.constant = 0
        myButton.layoutIfNeeded()
})

因此,第一步是声明您想要更改为 IBOutlets 的按钮约束:

enter image description here

答案 1 :(得分:0)

首先获取按钮的中心y,然后重新定位按钮。

float centerY = self.Button2.center.y;    

UIView.animateWithDuration(1, delay: 0, options: [], animations: {
    self.Button2.center.y = centerY + 18 + self.Button2.frame.height/2

    }, completion: nil)

答案 2 :(得分:0)

您必须先更改约束,然后更新动画中的UI。像这样的东西。

yourButton.yourOriginConstraint'sYCoordinate.constant = // Set this to what you want to change.

// yes, you should create an IBOutlet for constraint that you want to modify.

UIView.animateWithDuration(1.0, animations: {
            self.view.layoutIfNeeded()
            }, completion: nil)

另一种方法是不使用自动布局。

此处是reference