2013-05-14 110 views
2

我修改爲在應用程序委託如下我的導航欄:刪除UINavigationBar的標題利潤率

NSDictionary *settings = @{ 

          UITextAttributeFont     : [UIFont fontWithName:@"impact" size:36.0], 
          UITextAttributeTextColor   : [UIColor whiteColor], 
          UITextAttributeTextShadowColor  : [UIColor clearColor], 
          UITextAttributeTextShadowOffset  : [NSValue valueWithUIOffset:UIOffsetZero]}; 

[[UINavigationBar appearance] setTitleTextAttributes:settings]; 

但字體減少了喜歡本作的更大的字體。 :

enter image description here

我想在我的VC的viewWillAppear中這樣做,:

UIView *newTitleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
[newTitleView setBackgroundColor:[UIColor blackColor]]; 
[self.navigationController.navigationBar addSubview:newTitleView]; 

然後我要對齊標題中心。但那似乎並不正確。只有我真正需要的是去除標題標籤頂部和底部的邊距。我如何去做。

回答

3

試試這個代碼的子類自定義標題視圖,並沒有設置setTitleTextAttributes

UILabel *titleView = (UILabel *)self.navigationItem.titleView; 
    if (!titleView) { 
     titleView = [[UILabel alloc] initWithFrame:CGRectZero]; 
     titleView.backgroundColor = [UIColor clearColor]; 
     titleView.font = [UIFont boldSystemFontOfSize:20.0]; 
     titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]; 

     titleView.textColor = [UIColor yellowColor]; // Change to desired color 

     self.navigationController.navigationItem.titleView = titleView; 
     [titleView release]; 
    } 
    titleView.text = title; 
    [titleView sizeToFit]; 
+0

initWithFrame:CGRectZero ?? – CalZone 2013-05-14 06:34:26

+0

它應該工作給予靈活的寬度......如果它不爲你工作嘗試.. [的UILabel頁頭] initWithFrame:方法CGRectMake(([self.title長度<10 UITextAlignmentCenter:UITextAlignmentLeft),0,480,44) ]。 titleLabel.backgroundColor = [的UIColor clearColor]; – Divyu 2013-05-14 06:51:01

+0

'self.navigationController.navigationItem.titleView = titleview的;'以某種方式不是爲我工作,我用'[self.navigationController.navigationBar addSubview:titleview的]' – CalZone 2013-05-14 07:24:56

2

那麼我建議的最簡單的方法是使用帶有標籤和按鈕的UIView,並根據需求定製並使用它,而不是在導航欄上。 mnavigation欄高度定製是麻煩的高度是固定的,子視圖也可能會影響。所以我建議去與UIView的

+0

這是真的,但只剩下一件事需要被tweeked。那是在那裏的垂直邊緣,我希望我可以在導航欄中做,而不是改變整個筆尖佈局。 – CalZone 2013-05-14 06:36:34

1

你也可以繼承到UILabel並覆蓋drawTextInRect:是這樣的:

- (void)drawTextInRect:(CGRect)rect { 
    UIEdgeInsets insets = {0, 5, 0, 5}; 
    return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)]; 
} 

欲瞭解更多有用的鏈接,你可以找到 here