2013-01-24 5 views
5

iOSのUINavigationBarに収まるようにタイトルテキストを縮小することは可能ですか?UINavigationBarタイトルラベルテキスト

(自動レイアウトなしのポートレートiPhoneアプリ用)

私はタイトルバーを動的に設定していますが、テキストが長すぎる場合があり、現時点では省略記号で切り捨てることもあります。

すなわち「これはトンです...」

私はそれが代わりにテキストを縮小したいと思います。

答えて

8

独自のタイトルビューを作成して作成することができます。このような

何か:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    //Do any additional setup after loading the view, typically from a nib. 
    UILabel *titleLabelView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 40)]; //<<---- Actually will be auto-resized according to frame of navigation bar; 
    [titleLabelView setBackgroundColor:[UIColor clearColor]]; 
    [titleLabelView setTextAlignment: NSTextAlignmentCenter]; 
    [titleLabelView setTextColor:[UIColor whiteColor]]; 
    [titleLabelView setFont:[UIFont systemFontOfSize: 27]]; //<<--- Greatest font size 
    [titleLabelView setAdjustsFontSizeToFitWidth:YES]; //<<---- Allow shrink 
    // [titleLabelView setAdjustsLetterSpacingToFitWidth:YES]; //<<-- Another option for iOS 6+ 
    titleLabelView.text = @"This is a Title"; 

    navigationBar.topItem.titleView = titleLabelView; 

    //.... 
} 

は、この情報がお役に立てば幸いです。

+0

ありがとう、私は実際にこれに似た何かを既にしていました。 UILabelのカテゴリを使用して、すべてのView Controllerで素早く作成しました。 – Fogmeister

2
Xcode 7.1 - Swift 2.0 


//Adding Title Label 
     var navigationTitlelabel = UILabel(frame: CGRectMake(0, 0, 200, 21)) 
     navigationTitlelabel.center = CGPointMake(160, 284) 
     navigationTitlelabel.textAlignment = NSTextAlignment.Center 
     navigationTitlelabel.textColor = UIColor.whiteColor() 
     navigationTitlelabel.text = "WORK ORDER" 
     self.navigationController!.navigationBar.topItem!.titleView = navigationTitlelabel