iOS - 检查导航栏

Sat*_*yam 4 uinavigationbar uinavigationcontroller ios

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

Cor*_*ian 10

我回复的时间已经很晚了,但对于其他尝试做同样事情的人(比如我:D).

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

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");
    }
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*ann 2

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

因此,对于您来说,如果您可以获得导航栏的句柄,您所需要做的就是检查是否hiddenYESNO


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