ios11上,ABNewPersonViewController的navigation上色的高度不对?

ABNewPersonViewController在push后设置

for (UIView *view in personVC.navigationController.navigationBar.subviews) {
        if ([NSStringFromClass([view class]) containsString:@"ContentView"]) {
            view.backgroundColor = GlobalGreenColor;
        }
    }

之后就出现了这种状况:
图片描述

状态栏居然没有颜色,再一看结构
图片描述

才知道ContentView仅仅高44。他后面的backgroundView才高64
但是如此写

for (UIView *view in personVC.navigationController.navigationBar.subviews) {
        if ([NSStringFromClass([view class]) containsString:@"BackGround"]) {
            view.backgroundColor = GlobalGreenColor;
        }
    }

却没有用。不过我在navigationbar分类中重写的LayoutSubview中background是有用的。但是这样每个viewcontroller初始化时都会执行这个方法,加个类型判断又觉得非常浪费资源。有没有什么办法能直接在ABNewPersonViewController初始化的上下文中直接改变这个background的颜色或高边contentView的高度啊?

阅读 2.3k
1 个回答
CIImage *ciImage = [CIImage imageWithColor:[CIColor blueColor]];
    UIImage *image = [UIImage imageWithCIImage:ciImage];
    [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题