2013-07-11 65 views
1

我正在寫一個iOS 6應用程序,我想設置一個標題視圖,將顯示我的所有視圖,除非我另有指定。我試過[[UINavigationBar appearance] setTitleView:view][[UIBarButtonItem appearance] setTitleView:view],但都沒有工作。如何爲我的導航控制器設置默認標題視圖?

注意:這個標題視圖不能是標籤,它必須是一個按鈕。

任何想法?

回答

1

是否使用一個UINavigationController(不包括你的攻擊核心)?

如果是這樣,使用類似下面的設置背景圖片和字體:

[[UINavigationBar appearance] setTitleTextAttributes: 
      [NSDictionary dictionaryWithObjectsAndKeys: 
         [UIColor blackColor], UITextAttributeTextColor, 
         [UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:22.0], UITextAttributeFont,nil]]; 

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBar.png"]   forBarMetrics:UIBarMetricsDefault]; 

如果你只是想更改應用到在UIViewController中的某些特定子導航欄,然後使用類似如下:

[[UINavigationBar appearanceWhenContainedIn:[VCSubclassToChangeAppearance class], nil] 
setBackgroundImage:[UIImage imageNamed:@"navBar.png"] 
forBarMetrics:UIBarMetricsDefault]; 

您也可以使用此方法創建規則的例外爲所有人設置一個外觀,除了一個外。

如果你想改變的導航欄上的標準按鈕的外觀,做這樣的事情:

UIImage *standardBackgroundImage = [[UIImage imageNamed:@"navBarButton.png"] 
            resizableImageWithCapInsets:UIEdgeInsetsMake(0, 8, 0, 8)]; 

[[UIBarButtonItem appearance] setBackgroundImage:standardBackgroundImage 
             forState:UIControlStateNormal 
              style:UIBarButtonItemStyleBordered 
             barMetrics:UIBarMetricsDefault]; 

在這個例子中,每一個導航欄按鈕(這不是一個後退按鈕),是UIBarButtonItemStyleBordered變種,將使用圖像。您需要爲特定的按鈕圖像處理UIEdgeInsets。

+0

我需要有一個按鈕作爲標題視圖,而不是標籤。 – meisel

+0

當你說「標題視圖」時,你是否真的指UINavigationBar?這將有助於澄清,如果我真的把你送到正確的道路上。 – siburb

+0

是的,我的錯誤。每個UINavigationBar的標題視圖。 – meisel

0

你可以嘗試添加子視圖(的UITextField)到您的導航欄:

UITextField *titleField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100.0, 60.0)]; 
titleField.text = @"a title"; 
titleField.center = self.navigationController.navigationBar.center; 
[self.navigationController.navigationBar addSubview:titleField]; 
+0

然後我將如何在個別視圖控制器中對其進行定製? – meisel

+0

我會通過在各個視圖控制器上定義一個屬性來完成它,即someViewController.titleField。然後,在創建titleField並將其添加到欄後,我將設置一些ViewViewController.titleField = titleField(爲新的視圖控制器提供對titleField的引用)。然後推someViewController。在someViewController中,你可以訪問self.titleField來定製視圖。 –

0
  1. 您可以通過命令之後每個的viewController該組標題定義一個全局變量:

    自我。 title = kDefaultTitle

  2. 如果您使用故事板,您可以在標題屬性中的每個viewController上將其設置在右側欄

  3. 決賽:我認爲你可以自動設置的視圖中的所有標題
+0

您能否詳細說明3?另外,我不只是想設置一個標題,我想設置一個實際的標題視圖。 – meisel

+0

我建議你不要攻擊核心,它對你的應用程序非常危險。 – crz

0

由於不同視圖控制器的UIBarButtonItem會更改導航欄的標題視圖,因此無法全局設置標題視圖。您可以使用@Jake方法或子類UIViewController,其中您可以覆蓋方法setTitle。並將該類用作所有視圖控制器的超類。

0

你可以把任何視圖到titleview的任何的ViewController這是由下面的代碼包裹在的UINavigationController

self.navigationItem.titleView = yourView; 

試試這個。

相關問題