2009-05-10 3 views

Antwort

2

Die Navigationsleiste hat eine Eigenschaft namens Titelansicht - stellen Sie dies auf das Bild, das Sie mögen. Da die Titelansicht den Titel der Navigationsleiste überschreibt, müssen Sie den gewünschten Titel in die Bilddatei einfügen. Stellen Sie den Titel immer noch so ein, wie Sie möchten, damit er auf der Zurück-Schaltfläche erscheint, wenn Sie auf eine Ansicht drücken. Controller

+0

Ich glaube nicht, dass Sie dies tun möchten. Anstatt ein einfaches 32x32-Bild (zum Beispiel) neben Text zu erstellen (extrem einfach zu zeichnen), erstellen Sie ein viel größeres Bild. Aber ja, das ist definitiv eine Option. –

+0

Ich habe ein Bild 23x23 gezeichnet, weiß aber nicht, wie es in der Navigationsleiste angezeigt wird. Kannst du es uns wissen lassen? – ebaccount

+2

Sie müssen die Titelansicht nicht ersetzen, Sie können eine UIImageView erstellen, Ihr Symbolbild laden und es als untergeordnetes Element der Titelansicht hinzufügen. Verwenden Sie die frame-Eigenschaft Ihrer UIImageView, um sie an der gewünschten Position zu positionieren. –

9

Ich habe dies nicht getestet, aber da UINavigationBar eine Ansicht ist, können Sie ihm Unteransichten hinzufügen.

UIImage* myImage = [UIImage imageNamed:@"Myimage.png"]; 
UIImageView* myImageView = [[UIImageView alloc] initWithImage:myImage]; 
myImageView.frame.origin.x = 30.0; // You will have to find suitable values for the origin 
myImageView.frame.origin.y = 5.0; 

[myTabbar addSubView:myImageView]; 
[myImageView release]; 

Sie können Dinge wie die backItem-Eigenschaft verwenden, um die Position Ihrer Bildansicht zu berechnen.

+0

Hallo, Könnten Sie mich wissen lassen, wie ich Zugang zu meiner UINavigationBar bekomme? Danke. – ebaccount

+0

Ja, es funktioniert. Es zeigt das Bild in der linken oberen Ecke der Navigationsleiste an. Ich habe den Zugriff von UINavigationBar * navBar = [self.navigationController navigationBar]; Allerdings konnte ich die x, y-Position des Bildes nicht kontrollieren. Egal welche Werte ich bei myImageView.frame.origin einstelle.x und y zeigt es immer noch in der oberen linken Ecke. Können Sie mich wissen lassen, wie ich die Position einstellen kann – ebaccount

+0

Können Sie den Code zeigen, damit ich genau sehen kann, was Sie tun? Denken Sie daran, dass Ihr Bilderrahmen relativ zum Rahmen der UITabbar ist, also sollten Sie das zuerst überprüfen. –

36

So wird das Bild in der NavBar zentriert.

Dieser Code ist tatsächlich mit der Apple-Quelle für die NavBar enthalten und kann im iPhone Developer Center bei Apple gefunden werden. Die Quelle zeigt Ihnen verschiedene Möglichkeiten, um die StatusBar & NavBar zu manipulieren.

+1

Sie können die Größe der Bildansicht vor dem Festlegen der Titelansicht festlegen. Die Ursprungsparameter spielen keine Rolle - sie werden automatisch zentriert. Die zweiten beiden Zahlen sind Breite und Höhe. 'imageView.frame = CGRectMake (0, 0, 200, 30);' –

+0

danke das hat perfekt funktioniert! – iwasrobbed

+1

dies reicht nicht bis zum maximalen Umfang die beste Antwort, die ich gefunden habe, ist http://stackoverflow.com/questions/979750/background-image-for-navigation-view-iphone – LolaRun

6

Wenn Sie das Bild auf der rechten Seite der Navigationsleiste möchten, können Sie es als eine benutzerdefinierte Schaltfläche ohne Aktion definieren, wenn presed, wie diese

UIButton* fakeButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
UIBarButtonItem *fakeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:fakeButton]; 
self.navigationItem.rightBarButtonItem = fakeButtonItem; 
[fakeButtonItem release]; 
[fakeButton release]; 
+0

Ja, ich denke, dieser beantwortet die ursprüngliche Frage (mit dem Bild rechts neben dem Titel). Genau das habe ich auch gebraucht! –

3

Setzen Sie einfach diesen Code in - (void)viewWillAppear:(BOOL)animated; so werde es funktionieren und fügen Sie ein Bild mit einer Größe 320x40 Top Bar

namens
UIImage *image = [UIImage imageNamed: @"TopBar.png"]; 
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 
+0

Großartig, danke für die Antwort! – edzio27

0

einfach Ihre eigene Navigationsleiste schreiben. Deshalb müssen Sie die Navigationsleiste Faust deaktivieren:

Deaktivieren Sie die obere Leiste in der Interface Builder, indem Sie Ihre Navigation Controller in Storyboard Auswahl: Inspector Attribute -> Simulierte Metrics -> Top Bar: wählen Sie Keine

Danach Sie können jede HeaderView hinzufügen Sie mögen ...

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, sFrame.size.width, 100)]; 
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"header_image.png"]]; 
self.headerView.backgroundColor = background; 

// ...add buttons and labels 

[self.view addSubview:headerView]; 
1

ich die gleiche problem.Found aus der besten Lösung begegnet

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"background_image.png"] forBarMetrics:UIBarMetricsDefault]; 

Hoffe, das würde helfen ....

Verwandte Themen