navigationItemのtitleViewにUIImageを設定。
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titleLogo.png"]];
UIToolbarに画像を設定する場合、UIButtonにUIImageを設定、さらにUIBarButtonItemにUIButtonを設定、UIToolbarにUIBarButtonItemをItemsとして設定する。
タイトルとして画像をUIButtonに設定する場合、ボタンを押せなくする必要があり、UIButtonのenabledプロパティをNOにすればよいが、[UIButton setEnabled:NO];とするだけでは、タイトル画像をタップしたときに画像がハイライトしてしまう。
この場合は、UIButtonに画像を設定するときのforStateにUIControlStateNormalとUIControlStateHighlightedを設定したコードを2行記述すれば、タイトル画像をタップしても画像はハイライトしない。
// タイトル画像
UIImage *logoImage = [UIImage imageNamed:@"titleLogo.png"];
UIButton *customView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, logoImage.size.width, logoImage.size.height)];
[customView setBackgroundImage: logoImage forState:UIControlStateNormal];
[customView setBackgroundImage: logoImage forState:UIControlStateHighlighted];
[customView setEnabled:NO];
[customView addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* titleLogo = [[UIBarButtonItem alloc] initWithCustomView:customView];
// ボタン
UIBarButtonItem *hogeButton = [[UIBarButtonItem alloc] initWithTitle:@"ボタン" style:UIBarButtonItemStylePlain target:self action:@selector(buttonAction:)];
sortButton.style = UIBarButtonItemStylePlain;
// スペーサー
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
// ツールバー
CGRect toolbarFrame = CGRectMake(0, 0, 320, 44); // ツールバー作成
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:toolbarFrame];
NSMutableArray *buttonItemArray = [NSMutableArray array];
[buttonItemArray addObject:hogeButton];
[buttonItemArray addObject:space];
[buttonItemArray addObject:titleLogo];
[buttonItemArray addObject:space];
[toolbar setItems:buttonItemArray];
toolbar.backgroundColor = [UIColor whiteColor];
// ナビゲーションバーのTitleViewにツールバーを設定
[self.navigationItem setTitleView:toolbar];
【UIButtonの最新記事】

