2017年9月18日月曜日

xcode 点滅(ブリンク)させる方法

1. ググれば、以下のコードが出てきます。これを埋め込めば、とりあえずブリンクします。

[UIView animateWithDuration:0.5 delay:0
    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
    animations:^{
        (ブリンクさせたいオブジェクト).alpha = 0;
    }
    completion:^(BOOL finished){
        (ブリンクさせたいオブジェクト).alpha = 1;
    }
];

2. 動かしたり、止めたりしたい時は、どうするの?

私は、(ブリンクさせたいオブジェクト).hiddenでコントロールしてます。
1.のブロックは、裏で動きっぱなしになりますが、無理に止めるより放っておいた方が良いという判断です。

3. 困ったこと。

他のアプリに遷移し、戻ってきた時、ブリンクしなくなる点だと思います。
これはTimerに1.を埋め込んで、回すことで回避している人が、いらっしゃるようですが、
私は、enterForegroundに、1.を埋め込んで回避しています。

enterForegroundとは勝手命名のハンドラですが、UIApplicationWillEnterForegroundNotificationを受けるよう、viewDidLoadでNSNotificationCenterに登録したものです。
他のアプリから戻ってきた時に、呼び出されます。

4. 結局処方箋は何?

・viewWillAppearと、enterForegroundに、1.を埋め込む。
・hiddenで入切する。
かなと思います。

viewWillAppearは、ナビゲーションとかで他のタブに遷移し、戻ってきた時の対策です。
デバッガーでトレースすればわかりますが、
「他のタブに遷移→他のアプリに遷移→他のアプリから戻る→他のタブから戻る」
みたいなイジメ試験をやっても、正しく動作することがわかります。

0 件のコメント:

コメントを投稿