24/7 twenty-four seven

iOS/OS X application programing topics.

ツールバーのボタン (UIBarButtonItem) の隠し API

@iphone_dev_jp ツールバーとかタブバーによくある「現在地を表示」のボタン画像(あのライフルのスコープみたいなアイコンの)はシステム標準でないですよね。自分で作らないとダメなんですかね。

takoyaki0330 on Twitter: "@iphone_dev_jp ツールバーとかタブバーによくある「現在地を表示」のボタン画像(あのライフルのスコープみたいなアイコンの)はシステム標準でないですよね。自分で作らないとダメなんですかね。"


上記の「現在地を表示」ボタンに限らず、Safari の「戻る」ボタンや、写真.app の「ゴミ箱」ボタンなど、標準アプリで使われているアイコンなどはすべて提供されているわけではありません。
実はそれらのアイコンは非公開ではありますが API に存在します。

UIBarButtonSystemItem に 100 〜 110 までの値を直接指定すると非公開のボタンアイコンを表示することができます。

NSMutableArray *items = [NSMutableArray array];
UIBarButtonItem *item = nil;
for (int i = 100; i <= 109; i++) {
    item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:i target:nil action:nil];
    item.style = UIBarButtonItemStyleBordered;
    [items addObject:item];
    [item release];
}

item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:110 target:nil action:nil];
item.style = UIBarButtonItemStylePlain;
[items addObject:item];
[item release];

toolbar.items = items;



Undocumented のメソッドやクラスを利用するわけじゃないので、審査も通るのではないでしょうか。知りませんけど。