2011-12-25 6 views
15

私のiPhoneアプリにはタブバーコントローラがあり、各タブ(4つのタブ)には異なる色にしてフォントを変更するUINavigationControllerがあります私の独自のカスタムナビゲーションコントローラはどこでも使えるので、それらの変更は1つの場所にしかありません。色合いは簡単でうまく動作しますが、setTitleTextAttributesを使ってフォントを設定しようとするとフォントが変わりますが、一部のビューではタイトルが最後に切り取られて表示されます(「My titl ...」)。ビューを変更してタイトルを切り捨ててビューに戻ると、タイトルは正しく表示されます。titleTextAttributesを使用するとUINavigationbarのタイトルが切り捨てされます

現在、私のカスタムUINavigationControllerでの私のviewDidLoadがあります

UIFont *font = [UIFont fontWithName:@"GillSans-Bold" size:22]; 
NSDictionary *attr = [[NSDictionary alloc] initWithObjectsAndKeys:font, UITextAttributeFont, nil]; 
[self.navigationBar setTitleTextAttributes:attr]; 

私の考えは、それがtitleViewのフォントを変更していますが、(それは大きなフォントなので)それは新しいサイズに合わせてリサイズされていないということでした。別の問題は、電話機が横向きになっているとき、低い(g、p、y)の文字が途切れていることです。ラベルのサイズを変更する方法やminimumFontSizeを設定してテキストが大きすぎると縮小する方法はありますか?

答えて

3

これは、私はこの問題はw.r.trootviewcontrollerだと思う私

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self setTitle:self.station.title]; 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)]; 
    label.backgroundColor = [UIColor clearColor]; 
    [label setFont:[UIFont fontWithName:@"GillSans-Bold" size:24.0]]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.textColor = [UIColor whiteColor]; 
    label.adjustsFontSizeToFitWidth = YES; 
    label.text = self.title;  
    self.navigationItem.titleView = label; 
} 
+5

醜いハックを、新しいタイトルのビューを作成しますか?うーん... –

0

のために働きました。タブバーは、ルートビューのコントローラーの右側に定義されていますか?

そこからナビゲーションコントローラを押してポップすると、ナビゲーションに関係なくすべての内容が同じになります。

0

これが私の仕事:

+ (void)setNavBarTitle:(NSString *)title forUINavigationItem:(UINavigationItem*)navigationItem 
{ 
    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)] autorelease]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.font = [UIFont boldSystemFontOfSize:24]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 
    label.textColor = [UIColor whiteColor]; 
    label.adjustsFontSizeToFitWidth = YES; 
    label.text = title; 
    [label sizeToFit]; 
    navigationItem.titleView = label; 
} 
関連する問題