9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UIBarButtonItemのイメージを変更する

Last updated at Posted at 2013-05-01

UIToolbarに並んでいるUIBarButtonItemのイメージを変更する方法です。

普通に[UIBarButtonItem setImage:UIImage]したら変更できるのかと思っていたら、全然変わらない罠が。。。
どうやら、変更後のイメージを設定したUIButtonをカスタムビューとして設定したUIBarButtonItemを新たに作って、UIToolbarに設定しないとイケナイようです。

// 変更後のイメージ
UIImage *img = [UIImage imageNamed:@"hoge"];
        
// 変更後のイメージを設定するボタン
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

// イメージを設定
[button setImage:img forState:UIControlStateNormal];
        
// ボタンにターゲットを設定
[button addTarget:self action:@selector(onButtonClicked:) forControlEvents:(UIControlEventTouchUpInside)];

button.frame = CGRectMake(0, 0, img.size.width, img.size.height);
        
// 変更後のBarButtonを用意
UIBarButtonItem *barButton = [[UIBarButtonItem alloc]initWithCustomView:button];
        
// styleを変更(変更できない・・・)
[barButton setStyle:UIBarButtonItemStyleBordered];
barButton.style = UIBarButtonItemStyleDone;

// 既存のtoolbarのアイテムを取得
NSArray *barButtonItemArray = [self.myToolBar items];
        
NSMutableArray *changedBarButtonItemArray = [NSMutableArray arrayWithArray:barButtonItemArray];

// イメージを変更したいアイテムを入れ替える
[changedBarButtonItemArray replaceObjectAtIndex:4 withObject:barButton];

// 変更後のアイテムの一覧をtoolbarに設定する
self.myToolBar.items = changedBarButtonItemArray;
[barButton setStyle:UIBarButtonItemStyleBordered];
barButton.style = UIBarButtonItemStyleDone;

なんかー、スタイルを変更したくてもできないしー。

###他に方法あるんじゃないんですか・・・?
###教えて偉い人。。。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?