UILabelの文字を点滅[Objective-C]


Eye Catch Image

Objective-Cネタです。UILabelの文字を点滅をトライしてみました。
ググって探したのですが、スマートな方法が見つけられず…力技ですので、お見苦しいかも。もしもっといい方法があればぜひコメントをお願いします!


🎂 実装方法

白 <=> 赤に変化するUILabelのサンプルです。
点滅の方法としては、赤 <=> 白 の色の変化を時間とともに少しずつ行っています。

.h(ヘッダファイル)は以下のとおり。

@interface ViewController : UIViewController {
UILabel *bLabel;
BOOL needBlink;
float blinkTextExceptRedDelta;
float blinkTextExceptRedNum;
}
@end

.m(実装ファイル)は以下の通り。

- (void)viewDidLoad
{
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor blackColor]];

blinkTextExceptRedNum = 0.0; //赤以外の色の初期値
blinkTextExceptRedDelta = 0.05; // 色変化の割合

needBlink = YES;
bLabel = [[UILabel alloc] init];
bLabel.frame = CGRectMake(90, 100, 140, 30);
[bLabel setTextAlignment:NSTextAlignmentCenter];
[bLabel setBackgroundColor:[UIColor clearColor]];
[bLabel setTextColor:[UIColor redColor]];
bLabel.text = @"test";
[self.view addSubview:bLabel];

// 文字の点滅処理
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(blinkUILabel) userInfo:nil repeats:NO];
}

// 文字の点滅処理
- (void)blinkUILabel
{
if (needBlink) {
//赤以外の色の値
float newExceptRedNum = blinkTextExceptRedNum + blinkTextExceptRedDelta;

// 赤以外の色が0未満か1より大になる場合は、反転させる
if (newExceptRedNum < 0 || newExceptRedNum > 1.0) {
blinkTextExceptRedDelta = blinkTextExceptRedDelta * (-1);
blinkTextExceptRedNum = blinkTextExceptRedNum + blinkTextExceptRedDelta;
} else {
blinkTextExceptRedNum = newExceptRedNum;
}
// この部分を変更すれば希望の色への変化も実現できると思います
UIColor *color = [UIColor colorWithRed:1.0 green:blinkTextExceptRedNum blue:blinkTextExceptRedNum alpha:1.0];

[bLabel setTextColor: color];
[self.view addSubview:bLabel];

[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(blinkUILabel) userInfo:nil repeats:NO];
}
}

- (void)viewWillDisappear:(BOOL)blinkd
{
// 点滅を終了させる
needBlink = NO;
}

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍