2009-10-09 10 views

Antwort

3

Sie können eine beliebige UIView einem Titelbereich eines Navigationssteuergeräts zuweisen.

Erstellen Sie eine UILabel und legen Sie die Schriftart und Größe beliebig fest, und weisen Sie sie der UIViewController-Eigenschaft navigationItem.titleView zu. Stellen Sie sicher, dass die backgroundColor des UILabels auf clearColor eingestellt ist.

Dies funktioniert nur in der Top-Level-Ansicht. Wenn der Benutzer in die View-Controller-Hierarchie eindringt und die Schaltfläche "Zurück" angezeigt wird, wird die alternative Titelansicht ignoriert und die normale Textbezeichnung angezeigt.

+0

Gibt es eine Möglichkeit, die Schriftgröße usw. für die * Drilldown * Titelleisten festzulegen? – user141146

+0

Die offiziellen Dokumente sagen, dass Drilldown-Titelansichten ignoriert werden (vermutlich weil sie möchten, dass der Benutzer den Text sieht, bevor er in der nächsten Ebene auftaucht). Sie können jedoch immer versuchen, viewDidLoad zu überschreiben und rekursiv nach unten zu scannen die Ansichtshierarchie der NavBar, bis Sie die richtige UILabel finden, dann legen Sie die Schriftart darauf fest. – Ramin

17

der richtige Weg, den Titeltext eines NavController, um die Größe ist, die Titleview Eigenschaft des navigationItem

wie folgt aus (in viewDidLoad)

UILabel* tlabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0, 300, 40)]; 
     tlabel.text=self.navigationItem.title; 
    tlabel.textColor=[UIColor whiteColor]; 
    tlabel.backgroundColor =[UIColor clearColor]; 
    tlabel.adjustsFontSizeToFitWidth=YES; 
    self.navigationItem.titleView=tlabel; 
4

Sie wollen festlegen kann das Etikett so es einzuprägen sieht nicht unscharf und flach:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect frame = CGRectMake(0, 0, 400, 44); 
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.font = [UIFont boldSystemFontOfSize:18.0]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.textColor = [UIColor whiteColor]; 
    label.text = self.navigationItem.title; 
    // emboss so that the label looks OK 
    [label setShadowColor:[UIColor darkGrayColor]]; 
    [label setShadowOffset:CGSizeMake(0, -0.5)]; 
    self.navigationItem.titleView = label; 
} 
+0

auch gut gemacht für das Hinzufügen von textAlignment –

+0

Ich weiß nicht, was FontHelper ist, also habe ich verwendet: 'label.font = [UIFont boldSystemFontOfSize: 18.0];' Dies scheint ziemlich nah an der ursprünglichen Schriftart für den Nav-Bar-Titel. – Ginny

+0

@Ginny - Entschuldigung, ich habe nicht bemerkt, dass ich einen Anruf in meine eigene FontHelper-Klasse hinterlassen habe! –

3

Wenn Sie dies wollen beide arbeiten auf iPhone und iPad, und wollen auch den Titel bekommen zentrierten dann den folgenden Code verwenden.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UILabel* label=[[UILabel alloc] initWithFrame:CGRectMake(0,0, self.navigationItem.titleView.frame.size.width, 40)]; 
    label.text=self.navigationItem.title; 
    label.textColor=[UIColor whiteColor]; 
    label.backgroundColor =[UIColor clearColor]; 
    label.adjustsFontSizeToFitWidth=YES; 
    label.font = [AppHelper titleFont]; 
    label.textAlignment = NSTextAlignmentCenter; 
    self.navigationItem.titleView=label; 
} 
Verwandte Themen