Iphone / Ipad Добавить изображение и текст в заголовок навигации - PullRequest
9 голосов
/ 10 декабря 2010

Я просто пытаюсь добавить изображение и текст в заголовок навигационного элемента. Это то, что я делаю, но показывает только изображение, а не заголовок. Кажется, это было бы довольно легко.

Пример (

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

Ответы [ 4 ]

27 голосов
/ 20 июня 2012

Вот мой код:

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;
10 голосов
/ 10 декабря 2010

Установив пользовательский вид заголовка, вы заменяете стандартный вид, который обычно показывает текст заголовка.Из документации для titleView в UINavigationItem:

Если вы установите для этого свойства пользовательский заголовок, он будет отображаться вместо заголовка.

необходимо добавить свой собственный вид (возможно, UILabel) для отображения вашего заголовка - один из способов сделать это - добавить UILabel и UIImageView выше в качестве подпредставлений контейнера UIView и установить что как titleView.

4 голосов
/ 15 декабря 2015

In Swift 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 до менее, в зависимости от ситуации.Он вернется в центр, когда появится место.

0 голосов
/ 11 декабря 2013
UIImage *image = [UIImage imageNamed:@"image.png"]; // Image name with extension

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

Возможно, это самый короткий способ сделать это.

...