ios - 为每个 View Controller 分别垂直定位 UINavigationBar 标题

标签 ios objective-c uinavigationbar vertical-alignment title

尽管通过外观代理全局更改您的 UINavigationBar 标题,如下所示:

[[UINavigationBar 外观] setTitleVerticalPositionAdjustment:0.5 forBarMetrics:UIBarMetricsDefault];

如何为单个 View Controller 定义标题的垂直高度,我希望它看起来像这样:

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

但不幸的是不起作用。我正在尝试调整特定 View Controller 的标题垂直位置,而不影响其他 View Controller 的 UINavigationBar 标题位置。

最佳答案

您可以使用 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];
}

让我知道这是否适合您。

关于ios - 为每个 View Controller 分别垂直定位 UINavigationBar 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688905/

相关文章:

java - Java至 objective-c :Indexof()

iphone - 更改导航栏的字体

ios - Swift Admob 插页式错误

ios - Objective-C ,[NSString initWithFormat] 究竟是做什么的?

ios - 如何使用 Windows 开发机器为 iPhone 开发?

ios - 为什么 UIWebViewDelegate 分配而不是弱?

ios - 将RKObjectRequestOperation子类化以检查错误时,如何重试失败的操作?

iphone - 如何在辅助线程上以与在主线程上相同的速率运行 AVAssetReader?

objective-c - 在触摸 iOS 7 之前,后退按钮的背景图像不会出现

ios - 整个应用程序中只有一个 View 上的导航栏