尽管通过外观代理全局更改您的 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/