iOS 导航栏透明色

1、首先给UINavigationController添加一个扩展类 添加一个属性

.h文件

@interfaceUINavigationController (navController)

@property(nonatomic,copy)NSString*navColorAlpha;

@end

2、利用runtime机制添加属性

#import  objc/runtime.h

@implementationUINavigationController (navController)

staticcharnarColorAlphakey;

-(NSString*)navColorAlpha

{

returnobjc_getAssociatedObject(self, &narColorAlphakey);

}

-(void)setNavColorAlpha:(NSString*)navColorAlpha

{

objc_setAssociatedObject(self, &narColorAlphakey, navColorAlpha,OBJC_ASSOCIATION_COPY_NONATOMIC);

[selfsetNeedsNavigationBackground:[navColorAlphafloatValue]];

}

3、去分解导航的层数 并设置为alpha= 0

-(void)setNeedsNavigationBackground:(CGFloat)alpha {

// 导航栏背景透明度设置

UIView*barBackgroundView = [[self.navigationBarsubviews]objectAtIndex:0];// _UIBarBackground

UIImageView*backgroundImageView = [[barBackgroundViewsubviews]objectAtIndex:0];// UIImageView

if(self.navigationBar.isTranslucent) {

if(backgroundImageView !=nil&& backgroundImageView.image!=nil) {

barBackgroundView.alpha= alpha;

}else{

UIView*backgroundEffectView = [[barBackgroundViewsubviews]objectAtIndex:1];// UIVisualEffectView

if(backgroundEffectView !=nil) {

backgroundEffectView.alpha= alpha;

}

}

}else{

barBackgroundView.alpha= alpha;

}

self.navigationBar.clipsToBounds= alpha ==0.0;

}


注:导航的层级关系

导航栏的层级 关系

希望能帮到你

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容