2

我的 ViewController viewDidLoad 函数中的 UIView.animateWithDuration 调用没有动画。立即调用完成块。println 输出显示“完成真”。viewDidLoad 函数放置我的启动动画的位置是否错误?非常感谢任何提示。

class ViewController: UIViewController {
    @IBOutlet var beatIndicator:UIView?

    override func viewDidLoad() {
        super.viewDidLoad()

        if let led = beatIndicator? {
            led.alpha = 1.0
            led.frame = CGRectMake(20, 20, 30, 30)
            led.layer.cornerRadius = 15

            UIView.animateWithDuration(3.0, animations:{
                led.alpha = 0.5
                led.frame = CGRectMake(25, 25, 20, 20)
                led.layer.cornerRadius = 10
            }, completion:{(value: Bool) in
                println("completion \(value)")
            })
        }

        // ...
    }
}
4

2 回答 2

7

你试过把它放在 ViewDidAppear 中吗?

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if let led = beatIndicator {
        led.alpha = 1.0
        led.frame = CGRect(x: 20, y: 20, width: 30, height: 30)
        led.layer.cornerRadius = 15

        UIView.animate(withDuration: 3.0, animations:{
            led.alpha = 0.5
            led.frame = CGRect(x: 25, y: 25, width: 20, height: 20)
            led.layer.cornerRadius = 10
        }, completion:{(value: Bool) in
            print("completion \(value)")
        })
    }

    // ...
}
于 2014-09-30T10:13:42.147 回答
3

viewDidLoad()不是您应该为视图设置动画的理想场所。我在该方法中尝试了您的代码viewDidAppear()并且它有效。

于 2014-09-30T10:16:20.247 回答