2009-10-09 11 views

Odpowiedz

3

Możesz przypisać dowolne UIView do obszaru tytułu nawigatora.

Utwórz UILabel i ustaw dowolną czcionkę i rozmiar, a następnie przypisz ją do właściwości UIViewController o wartości navigationItem.titleView. Upewnij się, że backgroundColor UILabel jest ustawiony na clearColor.

Działa to tylko w widoku nawigacyjnym najwyższego poziomu. Gdy użytkownik wierci się w hierarchii kontrolera widoku, a wyświetlany jest przycisk "Wstecz", alternatywny tytuł Widok jest ignorowany i wyświetlana jest zwykła etykieta tekstowa.

+0

Czy istnieje sposób na ustawienie rozmiaru czcionki itp. Dla pasków tytułu * drążenia w dół *? – user141146

+0

Oficjalne dokumenty mówią, że drążone tytuły są ignorowane (prawdopodobnie dlatego, że chcą, aby użytkownik zobaczył tekst, zanim pojawi się w przycisku "wstecz" na następnym poziomie w dół.) Ale zawsze możesz spróbować przesłonić viewDidLoad i rekurencyjnie skanować w dół Hierarchia widoków NavBar, dopóki nie znajdziesz odpowiedniego UILabel, a następnie ustaw na nim czcionkę. – Ramin

17

właściwy sposób, aby zmienić rozmiar tekstu tytuł navcontroller jest ustawić właściwość titleView z navigationItem

tak (w 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

Możesz wykuć etykietę więc nie wygląda rozmyte i lokalu:

- (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

również dobrze zrobione, aby dodać textAlignment –

+0

Nie wiem, co to jest FontHelper, więc użyłem: 'label.font = [UIFont boldSystemFontOfSize: 18.0];' Wydaje się to całkiem zbliżone do oryginalnej czcionki dla tytułu paska nawigacji. – Ginny

+0

@Ginny - przepraszam, nie zauważyłem, że zostawiłem w wywołaniu mojej klasy FontHelper! –

3

JEŚLI chcesz to do pracy zarówno na iPhone i iPad, a także chcą uzyskać tytuł skupionego następnie użyć następującego kodu.

- (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; 
}