9

私は単にnavigationItemのタイトルに画像とテキストを追加しようとしています。これは私が行っていることですが、画像のみが表示され、タイトルは表示されません。これはかなり簡単なようです。

例 (

self.navigationItem.titleView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo_small_white.png"]] autorelease];
self.navigationItem.title = @"Company";
4

4 に答える 4

27

これが私のコードです:

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)]; 
UILabel *title = [[UILabel alloc] initWithFrame: CGRectMake(40, 0, 300, 30)];

title.text = NSLocalizedString(@"My Title", nil);
[title setTextColor:[UIColor whiteColor]];
[title setFont:[UIFont boldSystemFontOfSize:20.0]];

[title setBackgroundColor:[UIColor clearColor]];
UIImage *image = [UIImage imageNamed:@"MyLogo.png"];
UIImageView *myImageView = [[UIImageView alloc] initWithImage:image];

myImageView.frame = CGRectMake(0, 0, 30, 30); 
myImageView.layer.cornerRadius = 5.0;
myImageView.layer.masksToBounds = YES;
myImageView.layer.borderColor = [UIColor lightGrayColor].CGColor;
myImageView.layer.borderWidth = 0.1;

[myView addSubview:title];
[myView setBackgroundColor:[UIColor  clearColor]];
[myView addSubview:myImageView];
self.navigationItem.titleView = myView;
于 2012-06-20T01:56:22.517 に答える
10

カスタムタイトルビューを設定することにより、通常はタイトルテキストを表示する標準ビューを置き換えます。のドキュメントtitleViewからUINavigationItem

このプロパティをカスタムタイトルに設定すると、タイトルの代わりに表示されます。

UILabelしたがって、タイトルを表示するには、独自のビュー(場合によっては)を追加する必要があります。これを行う1つの方法は、aUILabelUIImageView上記をコンテナのサブビューとして追加し、それを。としてUIView設定することtitleViewです。

于 2010-12-10T18:55:12.263 に答える
4

スイフト2

var myView: UIView = UIView(frame: CGRectMake(0, 0, 300, 30))
var title: UILabel = UILabel(frame: CGRectMake(40, 0, 300, 30))
title.text = "The Title"
title.textColor = UIColor.blackColor()
title.font = UIFont.boldSystemFontOfSize(20.0)
title.backgroundColor = UIColor.clearColor()
var image: UIImage = UIImage(named: "your-image")!
var myImageView: UIImageView = UIImageView(image: image)
myImageView.frame = CGRectMake(0, 0, 30, 30)
myImageView.layer.cornerRadius = 5.0
myImageView.layer.masksToBounds = true
myImageView.layer.borderColor = UIColor.lightGrayColor().CGColor
myImageView.layer.borderWidth = 0.1
myView.addSubview(title)
myView.backgroundColor = UIColor.clearColor()
myView.addSubview(myImageView)

self.navigationItem.titleView = myView

関連する落とし穴:titleViewは自動的に中央に配置されます。上記の例に当てはまらない場合は、小さい画面サイズ(iPhoneなど)を使用している可能性があります。必要に応じて、UIViewとUILabelの幅を300からそれ以下に変更するだけです。余裕があれば中央に戻ります。

于 2015-12-15T13:25:10.963 に答える
0
UIImage *image = [UIImage imageNamed:@"image.png"]; // Image name with extension

self.navigationItem.titleView = [[[UIImageView alloc] initWithImage:image] autorelease];

これはおそらくそれを行うための最短の方法です。

于 2013-12-11T17:31:51.147 に答える