如何使用 UIappearance 在根视图控制器中获取透明导航栏

Posted

技术标签:

【中文标题】如何使用 UIappearance 在根视图控制器中获取透明导航栏【英文标题】:How to get transparent navigation bar in root viewcontroller using UIappearance 【发布时间】:2014-03-07 10:10:47 【问题描述】:

在我的应用程序代表中,我指定了一个透明工具栏(如对问题 18969248 的回答中所建议):- 代码是:

UINavigationBar *navigationBarAppearance = [UINavigationBar appearance];
navigationBarAppearance.backgroundColor = [UIColor clearColor];
[navigationBarAppearance setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
navigationBarAppearance.shadowImage = [[UIImage alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

这适用于所有推送到导航控制器堆栈的视图控制器,但不适用于根视图控制器(从 NIB 加载)。 如何在根视图控制器的导航栏中获得透明度?

【问题讨论】:

【参考方案1】:

如果您使用故事板,也许您应该通过 AppDelegate 以编程方式加载您的 RootViewController:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"yourStoryboard"
                                                             bundle: nil];
    YourCustomRootViewController *customRootVC = (YourCustomRootViewController*) [mainStoryboard instantiateViewControllerWithIdentifier:@"firstAddProductViewController"];

    // If you're not using storyboard, simply instantiate it this way
    YourCustomRootViewController *customRootVC = [[YourCustomRootViewController alloc] initWithNibName:@"yourNib" bundle:nil];

    /* In here, you want to add the code relative to the navigation bar of your rootVC */
    [self.window setRootViewController:customRootVC];


【讨论】:

以上是关于如何使用 UIappearance 在根视图控制器中获取透明导航栏的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIAppearance 渲染图像

除了在模态视图控制器中使用 UIAppearance 样式吗?

禁用视图控制器的 UIAppearance

与自定义视图控制器一起使用时,UINavigationBar 的 UIAppearance 不起作用...?

如何在根视图中隐藏导航控制器?

弹出视图控制器时 UIAppearance 未更新