

円形のビューを作って、枠線の色を赤から青、青から赤と延々と繰り返すようにしたいのです。  
以下の方法だと、赤から青にはなりますが、その状態から止まりリピートされません。  
オプションに[UIViewAnimationOptions.Autoreverse ,
UIViewAnimationOptions.Repeat]を入れてるので問題ないと思ったのですが。  
何か足らない部分は有るでしょうか。

[code]

        //この時点で円形にします
        button.layer.cornerRadius = button.frame.size.width/2;
        button.layer.masksToBounds = true;
        //枠線
        button.layer.borderWidth = 5.0;
        //枠線の色
        button.layer.borderColor = UIColor.redColor().CGColor
        UIView.animateWithDuration(1, delay: 1, options: [UIViewAnimationOptions.Autoreverse , UIViewAnimationOptions.Repeat], animations: { () -> Void in
            self.button.layer.borderColor = UIColor.blueColor().CGColor
            }, completion: { _ in
                self.button.layer.borderColor = UIColor.redColor().CGColor
        })
    
[/code]


CC BY-SA 3.0
2016-07-09T05:17:29.950
27468
2016-07-11T02:25:02.217
14760
question
swift ios objective-c swift2
図形のUIViewのアニメーション


コードをコピーして改造して試してみましたが、self.button.layer.borderColorの色はアニメーションで変化していませんでした。  
ビューの移動アニメーションと背景色変更アニメーションを追加して動かしてみたところ、ちゃんとリピート再生はされるようです。  
参考までに改造したコードを載せておきます。

[code]

        //この時点で円形にします
        self.button.layer.cornerRadius = button.frame.size.width/2;
        self.button.layer.masksToBounds = true;
        //枠線
        self.button.layer.borderWidth = 5.0;
        //枠線の色
        self.button.layer.borderColor = UIColor.greenColor().CGColor
    
        //初期位置の指定
        button.layer.position = CGPoint(x: self.view.frame.width/2, y:200)
        //背景色の指定
        self.button.backgroundColor = UIColor.orangeColor()
    
        UIView.animateWithDuration(1, delay: 1, options: [UIViewAnimationOptions.Autoreverse , UIViewAnimationOptions.Repeat], animations:{() -> Void in
            self.button.layer.borderColor = UIColor.blueColor().CGColor
            //移動アニメーション
            self.button.layer.position = CGPoint(x: self.view.frame.width/2, y:500)
            //背景色アニメーション
            self.button.backgroundColor = UIColor.greenColor()
    
        }, completion:{_ in
            //self.button.layer.borderColor = UIColor.redColor().CGColor
        })
    
[/code]

下記URLでも、CaLayerのborderColorはUIAnimationでアニメーションさせることはできないとあります。  
<http://qiita.com/ShingoFukuyama/items/66d2ca049e15bd340538>

そもそもアニメーションせずに、ボーダーが最初から青いままなのだと思いますがどうでしょうか？  
上記URLに別解があるようですので、そちらを参考にしてみてはいかがでしょうか。

XCodeのバージョンは7.3.1(7D1014)、動作環境はiPad4th、iOS9.3.2(13F69)で検証しました。


CC BY-SA 3.0
2016-07-11T02:25:02.217
27517
2016-07-11T02:25:02.217
17014
27468
answer