【Objective-C】UINavigationBarのタイトルを画像にする
UINavigationBarにUIImageViewを設定したいときのメモです。
(環境:xcode5, iOS7.1)
// タイトルに貼付けたいイメージ UIImage* image = [UIImage imageNamed:imageName]; // イメージのサイズを調節 CGSize viewSize = CGSizeMake(image.size.width, image.size.height); CGFloat imageHeight = 30; CGSize titleImageSize = CGSizeMake(viewSize.width * (imageHeight / viewSize.height), imageHeight); // UIImageViewをつくる UIImageView* titleImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, titleImageSize.width, imageHeight)]; titleImageView.backgroundColor = [UIColor clearColor]; titleImageView.image = [UIImage imageNamed:image]; [titleImageView setContentMode:UIViewContentModeScaleAspectFit]; // UIImageViewをのっけるUIViewをつくる UIView* bgView = [[UIView alloc] initWithFrame:titleImageView.frame]; bgView.backgroundColor = [UIColor clearColor]; [bgView addSubview:titleImageView]; //UINavigationBarのタイトルに設定。selfはViewControllerです。 self.navigationItem.titleView = bgView;
ポイントはUIImageViewを一旦UIViewに追加してから、
そのUIViewをナビゲーションバーのタイトルへ設定していることです。
僕の場合、UIImageViewを直接「self.navigationItem.titleView」へ設定していたので、サイズが自動調整されてしまって、
navigationBarの両端にボタンを設定しているときタイトルが真ん中にいかなくて困っていました。
以上です。