2009-09-14 7 views
19

私のIPhoneアプリケーションでは、UILabelのテキストを1秒間輝かせてから、1秒間フェードアウトします。また、私はこのサイクルを3〜4回繰り返すことを望みます。IPhone Text Glow Effect

これは可能ですか?

+0

良い質問。私は正確なことをしたい。 – Raptor

+1

あなたは@ andrewgleaveの回答を受け入れるべきです。 – msgambel

答えて

2

はい。 beginAnimation ... commitAnimationを使用し、アルファ値を使用してULabelを明るくするか暗くします。 UILabelのアルファベットのデフォルト値が0.85で始まり、1.0に明るくなってから0.75に減っていることを確認してください。すべて終了したら、0.85に戻ります。

ラベルの上に灰色または黒色の別のビューを表示し、同じbegin ... commitAnimationを使用して0から0.20程度のアルファ値を変更するなど、他の方法もあります。

+0

質問をしてください – SeniorShizzle

+0

彼はアニメーションパートだけに答えていますので、この答えはOKです。 –

2

これを行うにはさまざまな方法がありますが、品質はさまざまです。 1つの方法は、UILabelをサブクラス化し、drawRectメソッドのコアグラフィックスにある種の勾配効果を実装することです。

また、テキストシャドー(色とアルファを変更)で遊んで、まともな光が出てくるかどうかを確認することもできます。

最も簡単な方法は、おそらく、Photoshopで透明なグローアウトライン画像を作成し、それをテキストの後ろに置くことです。そして、mahboudzが提案するようにします。イメージをcoreanimationを使って出し入れします。

39

は、SDKで影の直接サポートがあります。パラメータを持つ

label.layer.shadowColor = [label.textColor CGColor]; 
label.layer.shadowOffset = CGSizeMake(0.0, 0.0); 

プレイ:

label.layer.shadowRadius = 3.0; 
label.layer.shadowOpacity = 0.5; 

とラベルboudsによって切り取られている影を避けるために:

label.layer.masksToBounds = NO; 

#include <Quartzcore/Quartzcore.h> 

に忘れてはいけないととのリンクまたはCoreGraphicsフレームワーク(これを指摘してくれたコメント者のおかげで)。

+0

私にとってはうまくいきません。私が考慮する必要があるものは何ですか? – Stavash

+3

adam

+0

をインポートして、Quartzcoreをコンパイルする必要がありますが、効果はまったくありません。 – minovsky

2
- (UILabel *) setUpGlowLabelWithFrame: (CGRect) frame fontSize: (int)fontSize { 
     UILabel* label = [[UILabel alloc] initWithFrame:frame]; 
     label.backgroundColor = [UIColor clearColor]; 
     label.font = [UIFont boldSystemFontOfSize:fontSize]; 
     label.textColor = [UIColor whiteColor]; 
     label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; 
     label.textAlignment = UITextAlignmentCenter; 
     label.layer.shadowColor = [label.textColor CGColor]; 
     label.layer.shadowOffset = CGSizeMake(0.0, 0.0); 
     label.layer.masksToBounds = NO; 

    label.layer.shadowRadius = 0.5f; 
    label.layer.shadowOpacity = 0.95; 
    label.numberOfLines = 2; 
    label.tag = 20; 

    return label; 
} 

これを使用するとグロー効果が得られます。

希望します。

ハッピーコーディング:)