2

ViewController viewDidLoad 関数の UIView.animateWithDuration 呼び出しがアニメーション化されません。完了ブロックはすぐに呼び出されます。println の出力は、'completion true' を示しています。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 に答える