2014-01-15 63 views
0

執行所有NavigationItem標題被截斷爲一定數量字符的規則的最佳方法是什麼?截斷應用程序中所有UINavigationBar標題的最佳方式

我看在什麼迄今做的有以下幾種:

子類UINavigationController以及應用程式讓所有UINavigationController期從繼承和使用這種方法

@interface MyNavController : UINavigationController { 

@end 

@implementation MyNavController 

- (void)setTitle:(NSString *)title { 

    // do the truncation here, but it's not working 
    [super setTitle:myTruncatedTitle]; 
} 

@end 

當然幾步之遙,這個方法隨時在這個navcontroller裏面的viewcontroller調用self.title = ....

但它沒有設置這個新的截斷標題顯示在NavBar中的標題。

或我發現這個解決方案,它涉及對UINavigationItem和交叉混合類別:

Make all instances of UINavigationBar titles lowercase without subclassing?

還有沒有其他的解決方案,你可以建議?

+0

都是你ViewControllers推動與MyNavController導航類?另外,你的繼承代碼中有一個拼寫錯誤:UINavication應該是UINavigation – Pavan

+0

謝謝,沒有從我的實際代碼複製。要回答你的問題,是的,他們被推入這個導航控制器。 –

回答

1
self.navigationItem.titleView=[Utility setTitleOfbar:NSLocalizedString(@"title", nil)]; 



+(UIView *)setTitleOfbar:(NSString *)title{ 
     title = [title substringToIndex: MIN(15, [title length])]; 

     CGSize size=[[UIScreen mainScreen] bounds ].size; 
     UIView *view=[[UIView alloc]initWithFrame:CGRectMake(size.width/2-120, 5, 200, 44)]; 
     [view setBackgroundColor:[UIColor clearColor]]; 
     UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0,3,200,44)]; 
     label.text=title; 
     label.textAlignment=NSTextAlignmentCenter; 
     label.numberOfLines = 0; 
     [view addSubview:label]; 
     return view; 
    } 
0

在應用程序委託的didFinishWithLaunching方法,你可以寫下面的代碼:

[[UINavigationBar appearance] setTitleTextAttributes:AttributeDictionary]; 
+1

我不相信有一個文本屬性可以設置標題的長度嗎? –

相關問題