2014-02-10 18 views
1

儘管通過外觀代理全局改變你UINavigationBar的標題如此:單獨定位UINavigationBar的標題垂直對於每個視圖控制器

[[UINavigationBar的外觀] setTitleVerticalPositionAdjustment:0.5 forBarMetrics:UIBarMetricsDefault];

你如何定義標題的垂直高度,我會希望像這樣的單一視圖控制器:

[self.navigationBar setTitleVerticalPositionAdjustment:0.5 forBarMetrics:UIBarMetricsDefault]。

但不幸的是不起作用。我試圖調整我的標題的垂直位置爲一個特定的視圖控制器,而不影響其他視圖控制器的UINavigationBar標題位置。

+0

您可能想通過設置'UINavigationItem'的'titleView'屬性來創建自己的'UILabel'並將其作爲自定義視圖(或視圖層次結構,取決於您的需要)放入。 –

回答

1

您可以使用appearanceWhenContainedIn:選擇器來設置每個UIViewController的外觀。這將是這個樣子......

[[UINavigationBar appearanceWhenContainedIn:[ViewControllerOne class], nil] setTitleVerticalPositionAdjustment:0.3 forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearanceWhenContainedIn:[ViewControllerTwo class], nil] setTitleVerticalPositionAdjustment:0.5 forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearanceWhenContainedIn:[ViewControllerThree class], nil] setTitleVerticalPositionAdjustment:0.7 forBarMetrics:UIBarMetricsDefault]; 

更新:一旦你創建了StyleManager

@implementation StyleManager 

+ (void)setApplicationStyle 
{ 
    [[UINavigationBar appearanceWhenContainedIn:[ViewControllerOne class], nil] setTitleVerticalPositionAdjustment:0.3 forBarMetrics:UIBarMetricsDefault]; 
    [[UINavigationBar appearanceWhenContainedIn:[ViewControllerTwo class], nil] setTitleVerticalPositionAdjustment:0.5 forBarMetrics:UIBarMetricsDefault]; 
    [[UINavigationBar appearanceWhenContainedIn:[ViewControllerThree class], nil] setTitleVerticalPositionAdjustment:0.7 forBarMetrics:UIBarMetricsDefault]; 

    // Other appearnce styling here... 
} 

@end 

如何通過創建一個StyleManager類使用示例你可以簡單地使用它在你的AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [StyleManager setApplicationStyle]; 
} 

讓我知道這是否適合你。

+0

如何使用Storyboard實現此功能,因爲這是我創建ViewController的方式?說我把你的代碼到我的應用程序委託,並將其配置爲[[UINavigationBar appearanceWhenContainedIn:[MainTableViewController class],nil] setTitleVerticalPositionAdjustment:-5 forBarMetrics:UIBarMetricsDefault]; – Dooderdo

+0

你使用故事板並不重要。我見過的一種常見做法是製作一個'StyleManager'或'ThemeManager'類,它具有一個單獨的類方法,用於設置所有應用程序的特定外觀。我用這個小例子更新了我的答案。 –

+0

那麼我在哪裏把這些appearancWhenContainedIn行代碼?在每個ViewController中?我不想使用tyleManager,因爲我不知道如何設置它。 Thankyou的幫助似乎無法找到任何這種在線。 – Dooderdo

相關問題