iOS开发-导航栏UINavigationBar隐藏底部线及透明度

iOS 导航栏UINavigationBar隐藏底部线及透明度

苹果官方给出的解释:

如果你不调用方法设置一张背景图片的话,那就给你默认一张,然后同时还有一张阴影图片被默认设置上去,这就是导航栏上1px黑线的由来。

解决办法:

方法1.就用上面说的那个方法,设置一张背景图片,然后在设置一张shadowImage就可以了:

复制代码
self.navigationBar = [UINavigationBar appearanceWhenContainedIn:self, nil];
[self.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]];
[self.navigationBar setShadowImage:[[UIImage alloc] init]]];

方法2:将UINavigationBar的clipsToBounds属性设成YES。

复制代码
 self.navigationBar = [UINavigationBar appearanceWhenContainedIn:self, nil];
 self.navigationBar.clipsToBounds=YES;
 //去掉导航条的半透明
 self.navigationBar.translucent = NO;

方法3:循环遍历一下UINavigationBar的所有子视图,发现有UIImageView类型的视图就remove掉,或者设成隐藏状态(hidden)。

复制代码
- (void)setNavigationStyle {
    [self setBackgroundImage];
    
    UIColor *color = K_NAVBAR_ITEM;
    if (IS_IOS7_OR_LATER) {
        self.navigationBar.tintColor = color;
        self.navigationBar.barTintColor = color;
    } else {
        self.navigationBar.tintColor = color;
    }
    
    [self.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor colorWithHexString:@"ffffff"],NSFontAttributeName:[UIFont systemFontOfSize:18]}];
}

- (void)setBackgroundImage {
    
    UIImage *placeholderImage = [UIImage imageWithColor:[UIColor colorWithHexString:@"3b93ff"] size:CGSizeMake(20.0, 20.0)];
    placeholderImage = [placeholderImage stretchableImageWithLeftCapWidth:placeholderImage.leftCapWidth*0.5 topCapHeight:placeholderImage.topCapHeight*0.5];

    if (IS_IOS7_OR_LATER) {
        
        [self.navigationBar setBackgroundImage:placeholderImage forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];
        //iOS7 阴影需单独设定 UIColor clearColor 是去掉字段 1像素阴影]
        [self.navigationBar setShadowImage:[UIImage imageWithColor:RGBA(37.0, 37.0, 37.0, 0.8) size:CGSizeMake(self.navigationBar.frame.size.width, 0.125)]];
    } else {
        [self.navigationBar setBackgroundImage:placeholderImage forBarMetrics:UIBarMetricsDefault];
    }
    
    self.navigationBar.translucent = NO;
    self.navigationBar.clipsToBounds=YES;
}

学习记录,每天不停进步。

相关推荐
自学AI的鲨鱼儿2 小时前
mac npm 安装 codex 报错 npm ENOTEMPTY
macos·npm·codex
Digitally5 小时前
如何将真我(realme)手机数据传输至 iPhone
ios·智能手机·iphone
Sephiroth.Ma9 小时前
Mac 提示“Docker 已损坏,无法打开”?我这样排查后 10 分钟修好
macos·docker·容器
量子炒饭大师9 小时前
【OpenClaw修炼宝典】—— 【macOS安装篇】想玩《爪子船长》复刻版却卡在安装?OpenClaw 从零环境搭建与编译全攻略 (小白避坑指南)
macos·openclaw·小龙虾·龙虾
JFSJHFZJ9 小时前
解密iPhone核心技术,读懂苹果的硬实力
ios·cocoa·iphone
不才小强10 小时前
macOS 屏幕录制开发完全指南:ScreenCaptureKit与音频采集实战
macos·音视频
JXSJHF11 小时前
iPhone隐藏功能大盘点,免费好用不占内存
ios·iphone
ShiLuoHeroKing20 小时前
Mole:面向专业用户的Mac系统清理开源方案
macos
ZZH_AI项目交付1 天前
为什么很多复杂跳转,最后都得先回首页?
flutter·ios
vx-bot5556661 天前
企业微信ipad协议在客户画像构建中的应用实践
ios·企业微信·ipad