失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 透明导航 html 导航栏(Nav) 全透明效果的一种另类实现

透明导航 html 导航栏(Nav) 全透明效果的一种另类实现

时间:2023-04-27 06:53:04

相关推荐

透明导航 html 导航栏(Nav) 全透明效果的一种另类实现

首先,我们看看不经过任何处理的Nav层级结构:

Nav层级结构

其中需要注意是:UIImageView是导航栏下面的那条线。有时候我们会发现Nav有一层蒙版,其实都是UIVisualEffectView在作怪。

主流实现方案

给nav设置一张空图片便可达到导航栏全透明效果。

//设置导航栏背景图片为一个空的image,这样就透明了

[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];

//去掉透明后导航栏下边的黑边

[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];

层级结构:

层级结构

我们可以看出,在设置了空图片之后,UIVisualEffectView没有加入进来,取而代之的是我们设置的空图片

另类实现方案

直接将UIVisualEffectView隐藏,让蒙版消失。

[self.navigationController.navigationBar.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

if([obj isMemberOfClass:NSClassFromString(@"_UIBarBackground")]){

[obj.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

if([obj isMemberOfClass:NSClassFromString(@"UIVisualEffectView")]||[obj isMemberOfClass:NSClassFromString(@"UIImageView")]){

obj.hidden = YES;

}

}];

}

}];

层级结构:

层级结构

值得注意的是:如果直接将UIVisualEffectView隐藏虽能达到全透明效果,但随之而来的负面影响是 在设置barTintColor会失效,因为barTintColor添加的图层也是在UIVisualEffectView上。

如果觉得《透明导航 html 导航栏(Nav) 全透明效果的一种另类实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。