2013-10-21 10 views
6

Ich habe ein UIToolbar Button erklärt:Einstellen eines Titels auf ein UIToolbar in IOS 7

UIToolbar *toolbar = [[UIToolbar alloc] init]; 
toolbar.frame = CGRectMake(0.0, 0.0, self.view.frame.size.width, 64.0); 

Ich habe auch eine UIBarButtonItem, die auf der linken Seite als Back-Taste hinzugefügt wird. Aber wie füge ich der UIToolbar einfach einen zentrierten Label-Titel hinzu?

Antwort

7
UILabel *lblTitle = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 150, 20)]; 
lblTitle.backgroundColor = [UIColor clearColor]; 
lblTitle.textColor = [UIColor blackColor]; 
lblTitle.textAlignment = NSTextAlignmentLeft; 
[self.view addSubview:lblTitle]; 
UIBarButtonItem *typeField = [[UIBarButtonItem alloc] initWithCustomView:lblTitle]; 
toolBar.items = [NSArray arrayWithArray:[NSArray arrayWithObjects:backButton,spaceBar,lblTitle, nil]]; 

Dieser Wille Löse dein Problem, denke ich.

6

ein UILabel erstellen und es als ein Element der Symbolleiste hinzufügen:

UIBarButtonItem *toolBarTitle = [[UIBarButtonItem alloc] initWithCustomView:myLabel]; 

Wenn Sie es zentrieren möchten, fügen Sie flexibel nutzbare Flächen an den Seiten:

UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] 
+0

Ich habe dies als Label : UILabel * errorLabel = [[UILabel-Zuweisung] initWithFrame: CGRectMake (100.0, 100.0, 140.0, 125.0)]; aber die y-Eigenschaft der Rect funktioniert nicht richtig – cdub

+0

Ihre Symbolleiste ist 64 Höhe, und wenn Ihr Etikett bei 100 beginnt, müssen Sie die y ändern. –

+0

yeah, aber der UILabel-Text ist ausgeschaltet im Vergleich zu meinem UIBarButtonItem-Zurück-Button. Wie verschiebe ich den UILabel Text auf der Seite – cdub

1

UIToolbar hat keine Titeleigenschaft. Wie andere vorgeschlagen haben, müssen Sie einen UILabel als Titel hinzufügen.

Oder Sie können UINavigationBar stattdessen verwenden und initialisieren mit - (id)initWithTitle:(NSString *)title;

4

Keiner der anderen Antworten waren als Kopie und pasteable, wie ich wollte, also ...

UILabel *toolbarLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
toolbarLabel.text = @"Text in yo toolbar"; 
[toolbarLabel sizeToFit]; 
toolbarLabel.backgroundColor = [UIColor clearColor]; 
toolbarLabel.textColor = [UIColor grayColor]; 
toolbarLabel.textAlignment = NSTextAlignmentCenter; 
UIBarButtonItem *labelItem = [[UIBarButtonItem alloc] initWithCustomView:toolbarLabel]; 
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
[self setToolbarItems:@[flexible, labelItem, flexible] animated:false]; 

Dies vorausgesetzt, dass Sie das haben Symbolleiste durch Ihren Navigationscontroller (um es von jedem View Controller anzuzeigen, der von einem Navigationscontroller angezeigt wird,)

Es sieht etwas aus g wie folgt aus (iOS 9): UILabel in a UIBarButtonItem with a custom view

+0

Schöne Antwort, danke. Gab dir 10 Punkte Bonus (auf andere Antwort). –

1

Hier ist ein Swift 2.2 Implementierung von Aaron Ash Antwort

let toolbarLabel = UILabel(frame: CGRectZero) 
toolbarLabel.text = "Text in yo toolbar" 
toolbarLabel.sizeToFit() 
toolbarLabel.backgroundColor = UIColor.clearColor() 
toolbarLabel.textColor = UIColor.grayColor() 
toolbarLabel.textAlignment = .Center 
let labelItem = UIBarButtonItem.init(customView: toolbarLabel) 
let flexible = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target:nil, action:nil) 
self.setToolbarItems([flexible, labelItem, flexible], animated: false) 
0

ist hier ein Swift 3-Implementierung:

let topBarTitleLabel = UILabel.init(frame: (CGRect.init(origin: CGPoint.init(x: 0.0, y: 0.0), size: CGSize.init(width: 0.0, height: 0.0)))) 
    topBarTitleLabel.text = "Text in yo toolbar" 
    topBarTitleLabel.sizeToFit() 
    topBarTitleLabel.backgroundColor = UIColor.clear 
    topBarTitleLabel.textColor = UIColor.black 
    topBarTitleLabel.textAlignment = NSTextAlignment.center 
    let topBarButtonItemTitleLabel = UIBarButtonItem.init(customView: topBarTitleLabel) 
    let flexibleBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil) 
    self.topToolBar.setItems([flexibleBarButtonItem, topBarButtonItemTitleLabel, flexibleBarButtonItem], animated: false) 
    self.topToolBar.setNeedsLayout() 
Verwandte Themen