iOS- 检查导航栏

问题描述 投票:4回答:3

我正在创建一个库,它将在应用程序的底部添加一个视图(当我的库集成到应用程序中时)。我正在使用视图控制器的视图的frame参数来获取视图的大小,并根据并显示该库的视图框架。问题是,当导航栏出现时,我的视图仍在可见的实际视图下方。因此,我想知道当前的视图控制器是否基于导航控制器,以及导航栏在该视图中是否可见。我怎么找到那个?

ios uinavigationcontroller uinavigationbar
3个回答
2
投票

UINavigationBar继承并具有UIView的所有优良特性和行为,并且其中之一是hidden

因此,对于您的视图,如果您可以找到导航栏的句柄,则只需检查hiddenhidden还是YES

一种实现方法是为您的库提供UINavigationController属性或访问器(设置器和获取器),以便任何使用该库的人都可以代表您的库设置导航控制器和/或栏。


10
投票

我迟到了答复,但对于其他尝试做相同事情的人(如我:D)。

此代码可以解决您的问题:

NO

0
投票
id nav = [UIApplication sharedApplication].keyWindow.rootViewController;
if ([nav isKindOfClass:[UINavigationController class]]) {
    UINavigationController *navc = (UINavigationController *) nav;
    if(navc.navigationBarHidden) {
        NSLog(@"NOOOO NAV BAR");
    } else {
        NSLog(@"WE HAVE NAV BAR");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.