在swift中

时间:2016-05-10 21:09:00

标签: ios xcode swift

我试图在Swift中设置文本标签(称为标签)的动画,但它不起作用。没有错误,只是坚持下去。这是我在ViewDidLoad中的代码:

label.text = savedText
    label.center = CGPoint(x:50, y:10)

    UIView.animateWithDuration(1.0, delay: 1.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.0, options: .CurveLinear, animations: { () -> Void in
        self.label.center = CGPoint(x:100, y:70)
        }, completion: nil)

不确定为什么它没有工作,因为我遵循了教程,但任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:3)

我认为问题是viewDidLoad在您的视图可见之前被调用,因此动画会立即发生。

尝试将此添加到您的代码中:

override func viewDidAppear(animated: Bool) {
    if label.center != CGPoint(x:50, y:10) {
        UIView.animateWithDuration(1.0, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.0, options: .CurveLinear, animations: { () -> Void in
            self.label.center = CGPoint(x:100, y:70)
        }, completion: nil)
    }
}

if语句阻止标签在每次视图出现在屏幕上时生成动画,而不是仅在第一次(最初加载viewController时)执行此操作。如果你希望每次都删除它就会发生。

P.S。我也删除了延迟,因为我认为它是试图阻止错误发生(在教程中)