11

現在、UILabel にテキストを表示するために割り当てられた各番号で乱数を生成するボタンの IBAction があります。ただ表示するだけでなく、テキストがフェードインしたり、その他の面白いアニメーションもかっこいいと思います。これを実現する簡単な方法を知っている人はいますか?

今、私はちょうど使用します

labelMain.text = @"my text";
4

6 に答える 6

31

これは少し古い (11 か月前) ことは承知していますが、投稿された他のアプローチに代わる方法について言及する価値があると思います。これはより良い解決策だと思います。

UIView transitionWithView:duration:options:animations:completion次のように、クラスレベルのメソッドを利用します。

NSTimeInterval duration = 0.5f;
[UIView transitionWithView:labelMain
                  duration:duration
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                  labelMain.text = @"new value";
                } completion:nil];

labelMain.textこれにより、前の値から「新しい値」にクロスフェードします。

このアプローチは、たとえば UIImageView の画像を変更するなど、他のビューの値でも機能します。

このトピックに関するApple のドキュメントを参照してください。

于 2014-06-05T21:53:08.737 に答える
28

次のコードは、ラベルにフェード効果を与えます。

 - (IBAction)buttonClicked:(UIButton *)sender
  {
    labelMain.alpha = 0;

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
    animations:^{ labelMain.alpha = 1;}
    completion:nil];
 }
于 2013-06-28T06:23:23.217 に答える
1

これを試して:

[labelMain setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[labelMain setAlpha:1];
[UIView commitAnimations];

デュレーションの変更は非常に簡単0.8です。コードで値を調整するだけです。

于 2013-06-28T06:24:05.567 に答える
0
// fade out the current value
[UIView animateWithDuration:0.2
                      delay:0
                    options:0
                 animations:^{
                   labelMain.alpha = 0.0f;
                 }
                 completion:^(BOOL finished) {
                   // set the new value and fade in
                   labelMain.text = newValue;
                   [UIView animateWithDuration:0.2
                                         delay:0
                                       options:0
                                    animations:^{
                                      labelMain.alpha = 1.0f;
                                    }
                                    completion:nil];

                 }];
于 2013-06-28T06:29:05.403 に答える
0

これはクロスフェードアニメーションのように見えます

 [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut
        animations:^{
    labelMain.alpha = 0;

        [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
        animations:^{ labelMain.alpha = 1;}
        completion:nil];

    } completion:nil];
于 2013-06-28T07:22:42.047 に答える