ツールバーにカスタムボタンを置く - CustomButton at Toolbar -
ツールバーのボタン
ツールバーに置くボタンはUIBarButtonItemインスタンスである。
UIBarButtonItemは画像で初期化したり、
UIBarButtonItem *catalogButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"icon_book.png"] style:UIBarButtonItemStylePlain target:self action:@selector(catalogButtonPressed)];
システムボタンを使ってみたり
UIBarButtonItem *myBookmarks = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookBarks target:self action:@selector(mySelector)];
することができる。
でも、initWithImageを使って生成したボタンは白黒画像になってしまう。これは悲しい。
ということで色つき画像をボタンに設定してツールバーに置く方法。
カスタムボタン
これを解決するにはカスタムボタンを使えばいい。カスタムボタンで画像を設定して作ったボタンはツールバーに置いても白黒画像にならないらしい。
こちらのブログを参考にして書いたコードが以下。
UIButton *catalogUIButton = [UIButton buttonWithType:UIButtonTypeCustom]; [catalogUIButton setImage:[UIImage imageNamed:@"icon_glass.png"] forState:UIControlStateNormal]; [catalogUIButton addTarget:self action:@selector(catalogButtonPressed) forControlEvents:UIControlEventTouchUpInside]; [catalogUIButton setShowsTouchWhenHighlighted:YES]; catalogUIButton.frame = CGRectMake(0, 0, 40, 40); [catalogUIButton setAdjustsImageWhenHighlighted:YES]; UIBarButtonItem *catalogButton = [[[UIBarButtonItem alloc] initWithCustomView:catalogUIButton] autorelease];
で、できたツールバーがこんな感じ。
良いです。
ちなみに残念ですがこうして作ったボタンにはsetTitleを使ってもタイトルが付きませんでした。何でだ!?
仕方ないから、UILabelを使ってタイトルもどきを設置します。