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;
}

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

相关推荐
我唔知啊27 分钟前
SwiftUI 无限循环轮播图 支持手动控制
ios·swiftui
鸠摩智首席音效师2 小时前
如何在 macOS 中清理 Homebrew 软件包 ?
macos
skywalk81632 小时前
windows装wsl ubuntu24.04 ,里面装qemu ,然后装mac os (windows也可以直接qemu安装macos)(未实践)
windows·ubuntu·macos·qemu
QuantumLeap丶3 小时前
《Flutter全栈开发实战指南:从零到高级》- 08 -导航与路由管理
flutter·ios·dart
mixboot4 小时前
macOS 部署安装 IndexTTS2
macos·indextts2
LinkTime_Cloud5 小时前
苹果牵手SpaceX,iPhone 18 Pro将实现卫星直接上网
ios·iphone
2501_915921435 小时前
iOS 26 描述文件管理与开发环境配置 多工具协作的实战指南
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915909065 小时前
iOS 抓包实战 从原理到复现、定位与真机取证全流程
android·ios·小程序·https·uni-app·iphone·webview
2501_915106326 小时前
HBuilder 上架 iOS 应用全流程指南:从云打包到开心上架(Appuploader)上传的跨平台发布实践
android·ios·小程序·https·uni-app·iphone·webview
2501_938782096 小时前
从实例到单例:Objective-C 单例类的线程安全实现方案
开发语言·macos·objective-c