【iOS】TZImagePickerController设置导航栏颜色无效?导航栏颜色总是白色?

205 阅读1分钟

一、是否有集成WRNavigationBar?

如有,参考其readme调一下它的wr_setBlackList,把TZImagePickerController相关的控制器放到黑名单里,使得不受WRNavigationBar的影响。WRNavigationBar的黑名单会有不生效的情况,临时解决方案大家可参考:wangrui460/WRNavigationBar#145

二、是否有集成GKNavigationBarViewController?

如有,需要升级到2.0.4及以上版本,详见issue:QuintGao/GKNavigationBarViewController#7

三、没有集成以上库依旧有问题

方案一:参考Demo里的代码,加上imagePickerVc.navigationBar.standardAppearance的相关设置。

方案二:尝试修改demo代码,如下:

if (@available(iOS 13.0, *)) {
    UINavigationBar *navBar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[TZImagePickerController class]]];
    UINavigationBarAppearance *navBarAppearance = [[UINavigationBarAppearance alloc]init];
    [navBarAppearance setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
    navBarAppearance.backgroundColor = [UIColor colorWithRed:(34/255.0) green:(34/255.0)  blue:(34/255.0) alpha:1.0];
    navBar.scrollEdgeAppearance = navBarAppearance;
    navBar.standardAppearance = navBarAppearance;
} else {
    self.navigationBar.barTintColor = [UIColor colorWithRed:(34/255.0) green:(34/255.0)  blue:(34/255.0) alpha:1.0];
    self.navigationBar.tintColor = [UIColor whiteColor];
}

image.png

- (void)setNaviBgColor:(UIColor *)naviBgColor {
    _naviBgColor = naviBgColor;
    if (@available(iOS 13.0, *)) {
        UINavigationBar *navBar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[TZImagePickerController class]]];
        UINavigationBarAppearance *navBarAppearance = [[UINavigationBarAppearance alloc]init];
        [navBarAppearance setTitleTextAttributes:@{NSForegroundColorAttributeName:self.naviTitleColor?:[UIColor whiteColor]}];、
        navBarAppearance.backgroundColor = naviBgColor;
        navBar.scrollEdgeAppearance = navBarAppearance;
        navBar.standardAppearance = navBarAppearance;
    } else {
        self.navigationBar.barTintColor = naviBgColor;
    }
}

image.png

- (void)configNaviTitleAppearance {
    NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
    if (self.naviTitleColor) {
        textAttrs[NSForegroundColorAttributeName] = self.naviTitleColor;
    }
    if (self.naviTitleFont) {
        textAttrs[NSFontAttributeName] = self.naviTitleFont;
    }
    if (@available(iOS 13.0, *)) {
        UINavigationBar *navBar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[TZImagePickerController class]]];
        UINavigationBarAppearance *navBarAppearance = [[UINavigationBarAppearance alloc]init];
        [navBarAppearance setTitleTextAttributes:textAttrs];
        navBarAppearance.backgroundColor = self.naviBgColor?:[UIColor colorWithRed:(34/255.0) green:(34/255.0)  blue:(34/255.0) alpha:1.0];
        navBar.scrollEdgeAppearance = navBarAppearance;
        navBar.standardAppearance = navBarAppearance;
    } else {
        self.navigationBar.titleTextAttributes = textAttrs;
    }
}

image.png