iOS-导航栏透明以及阴影

来源:互联网 发布:linux系统如何分区 编辑:程序博客网 时间:2024/05/20 19:18

设置导航栏阴影

- (void)setNavgationBarShadowHidden:(BOOL)navgationBarShadowHidden{    _navgationBarShadowHidden = navgationBarShadowHidden;    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{        UIImage *image = nil;        if (_navgationBarShadowHidden) {            image = [UIImage new];        }        [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];        [self.navigationController.navigationBar setShadowImage:image];    });}

设置导航栏透明

- (void)setNavgationBarTranslucent:(BOOL)navgationBarTranslucent{    _navgationBarTranslucent = navgationBarTranslucent;    if (_navgationBarTranslucent) {        //导航栏 navbar        UIImage *image = [UIImage new];        [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];        [self.navigationController.navigationBar setTranslucent:YES];        //    为什么要加这个呢,shadowImage 是在ios6.0以后才可用的。但是发现5.0也可以用。不过如果你不判断有没有这个方法,        //    而直接去调用可能会crash,所以判断下。作用:如果你设置了上面那句话,你会发现是透明了。但是会有一个阴影在,下面的方法就是去阴影        if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)])        {            [self.navigationController.navigationBar setShadowImage:image];        }        //    //    以上面4句是必须的,但是习惯还是加了下面这句话        [self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];    }else{        [self.navigationController.navigationBar setTranslucent:NO];        //    以上面4句是必须的,但是习惯还是加了下面这句话        [self.navigationController.navigationBar setBackgroundColor:[UIColor redColor]];        }        [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];    }}
原创粉丝点击