我正在寫一個iOS 6應用程序,我想設置一個標題視圖,將顯示我的所有視圖,除非我另有指定。我試過[[UINavigationBar appearance] setTitleView:view]
和[[UIBarButtonItem appearance] setTitleView:view]
,但都沒有工作。如何爲我的導航控制器設置默認標題視圖?
注意:這個標題視圖不能是標籤,它必須是一個按鈕。
任何想法?
我正在寫一個iOS 6應用程序,我想設置一個標題視圖,將顯示我的所有視圖,除非我另有指定。我試過[[UINavigationBar appearance] setTitleView:view]
和[[UIBarButtonItem appearance] setTitleView:view]
,但都沒有工作。如何爲我的導航控制器設置默認標題視圖?
注意:這個標題視圖不能是標籤,它必須是一個按鈕。
任何想法?
是否使用一個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。
你可以嘗試添加子視圖(的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];
然後我將如何在個別視圖控制器中對其進行定製? – meisel
我會通過在各個視圖控制器上定義一個屬性來完成它,即someViewController.titleField。然後,在創建titleField並將其添加到欄後,我將設置一些ViewViewController.titleField = titleField(爲新的視圖控制器提供對titleField的引用)。然後推someViewController。在someViewController中,你可以訪問self.titleField來定製視圖。 –
由於不同視圖控制器的UIBarButtonItem會更改導航欄的標題視圖,因此無法全局設置標題視圖。您可以使用@Jake方法或子類UIViewController
,其中您可以覆蓋方法setTitle
。並將該類用作所有視圖控制器的超類。
你可以把任何視圖到titleview的任何的ViewController這是由下面的代碼包裹在的UINavigationController。
self.navigationItem.titleView = yourView;
試試這個。
我需要有一個按鈕作爲標題視圖,而不是標籤。 – meisel
當你說「標題視圖」時,你是否真的指UINavigationBar?這將有助於澄清,如果我真的把你送到正確的道路上。 – siburb
是的,我的錯誤。每個UINavigationBar的標題視圖。 – meisel