起動時に領域に対してちょっとした説明をしてくれるアプリをちょいちょい見かけるが、そんな機能を簡単に実装するためのiOSライブラリを見つけた。
どんなものかはまずデモを見てもらえばわかるはず。
デモ
導入と実装方法
CocoaPodsに対応しているのでいつものようにインストールする。
1# Podfile
2pod 'WSCoachMarksView'
1% pod install
実装のサンプルとして、ボタンが3つあるこんな画面に対して上から順に説明を表示することを考える。

それぞれのボタンはViewControllerクラスに関連づけてある。
1#import <UIKit/UIKit.h>
2
3@interface ViewController : UIViewController
4
5@property (weak, nonatomic) IBOutlet UIButton *hogeButton;
6@property (weak, nonatomic) IBOutlet UIButton *fugaButton;
7@property (weak, nonatomic) IBOutlet UIButton *piyoButton;
8@end
で、例えばこのViewControllerが表示されるときに説明画面を起動する場合は、viewDidLoadで次のような実装を書く。
1- (void)viewDidLoad
2{
3 [super viewDidLoad];
4 // Do any additional setup after loading the view, typically from a nib.
5
6 NSArray *marks = @[
7 @{
8 @"rect": [NSValue valueWithCGRect:_hogeButton.frame],
9 @"caption": @"Do hogehoge"
10 },
11 @{
12 @"rect": [NSValue valueWithCGRect:_fugaButton.frame],
13 @"caption": @"Do fugafuga"
14 },
15 @{
16 @"rect": [NSValue valueWithCGRect:_piyoButton.frame],
17 @"caption": @"Do piyopiyo"
18 }
19
20 ];
21
22 WSCoachMarksView *coachView = [[WSCoachMarksView alloc] initWithFrame:self.view.bounds coachMarks:marks];
23 [self.view addSubview:coachView];
24 [coachView start];
25}
WSCoachMarksViewは表示する文字列(NSString*)とハイライト表示する領域(CGRect)のディクショナリの配列を、初期化時に受け取る。あとはaddSubviewしてstartするだけで、配列の順番にハイライトを移動しながらメッセージを表示してくれるというわけ。これでできたのが最初に貼ったデモだ。
凝ったことをするには足りないが、ちょっとした説明を入れたいという場合には重宝しそう。
なお、普通に実装すると毎回表示されていまいユーザーにとっては鬱陶しいものとなるので、初回だけ表示するなどのを工夫を自分で実装しなければいけない。NSUserDefaultsなどを使えば大した手間ではないからいいけど、そこまで気が利いてるといいよねー。