12

UIButtonのtextColorプロパティをアニメーション化する方法はありますか?UILabelテキストカラーアニメーションの解決策をいくつか見つけましたが、UIButtonの解決策は見ていません。

4

6 に答える 6

20

ビューでトランジションを使用

[UIView transitionWithView:backButton
                          duration:0.5f
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^{
                            [backButton setTitleColor:[_peacock lighten:d.primary] forState:UIControlStateNormal];
                        }
                        completion:^(BOOL finished){
                        }];
于 2016-01-22T13:17:07.240 に答える
6

NSTimerは、アニメーションツールとしては絶対に良くありません。また、精度が必要な一般的な時間管理(フレームレート)にも使用しないでください。このブログ投稿は、アニメーション化できないUILabelプロパティをどうするかについての私の立場を完全に例示しています。UILabelプロパティは、NSTimerではなくCAを介してレンダーサーバーに送信する必要があります。UILabelの代わりに、CATextLayerを使用またはラップforegroundColorして、標準のアニメーションブロックでそのプロパティをアニメーション化できます。

于 2012-07-15T04:22:44.663 に答える
1

これはここで非常によく答えられます。それは基本的にこの便利な人を使用しています:

[UIView transitionWithView:duration:options:animations:^()completion:^()]; 
于 2015-04-30T13:54:07.600 に答える
0

明らかに、あなたは使用する必要があります

[UIButton setTitleColor:[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0] forState:UIControlStateNormal];

実際にアニメーション化して時間の経過とともに色を変更するには、NSTimerのインスタンスを作成し、@selectorパラメーターを使用して実行する特定のメソッドを指定する必要があります。タイマーが実行されるたびに、メソッドがトリガーされ、UIButtonの色が変更されます。

 [NSTimer scheduledTimerWithTimeInterval:2.0f
         target:self
     selector:@selector(updateCounter:)
     userInfo:nil
     repeats:YES];

また、チェックしてください: http ://servin.com/iphone/iPhone-Timers-and-Animated-Views.html

于 2012-07-15T03:43:30.987 に答える
0

同じ位置に配置された異なる色の2つのボタン(またはラベルなど)を使用できます。

button1 = UIButton(frame: frame)
button2 = UIButton(frame: frame) // same frame

button1.setTitleColor(UIColor.redColor(), forState: .Normal) // red
button2.setTitleColor(UIColor.blueColor(), forState: .Normal) // blue

その後、button2のトランジションアニメーションによって色のアニメーションに到達できます。

UIView.animateKeyframesWithDuration(
    1.0, delay: 0, options: [.Autoreverse, .Repeat],
    animations: {
        UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5, animations: {
            self.button2.alpha = 1.0
        })

        UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: {
            self.button2.alpha = 0.0
        })
    }, completion: nil)
于 2016-09-04T16:57:13.243 に答える
-2

これは実際にはアニメーションではありませんが、機能します。

色をアニメートしたい頻度でタイマーを作成します。

タイマーがchangeColorOnButton起動するたびに、そのタイマーにメソッドを呼び出させます。

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(changeColorOnButton:) userInfo:nil repeats:YES];

色の配列を作成しますcolorsArray(事前に色を配置するか、配列に束を追加してシャッフルしてランダム化します。int、を作成しますintForColorInArray

changeColorOnButtonメソッドで、次のようにします。

- (void) changeColorOnButton:(UIButton *) button {

     UIColor *nextColor = [colorsArray objectAtIndex:intForColorArray];
     [button.titleLabel.setTextColor:nextColor];
     intForColorArray = (intForColorArray +1) % [colorsArray count];
}
于 2012-07-15T03:48:14.883 に答える