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

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

相关推荐
Digitally29 分钟前
iPhone 数据擦除软件评测(最新且全面)
ios·cocoa·iphone
晓风伴月8 小时前
微信小程序:在ios中border边框显示不全
ios·微信小程序·小程序
2501_9160137411 小时前
iOS 加固工具使用经验与 App 安全交付流程的实战分享
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063215 小时前
Fiddler 中文版抓包实战 构建标准化调试流程提升团队协作效率
android·ios·小程序·https·uni-app·iphone·webview
iReaShare16 小时前
iPhone 数据擦除软件评测(最新且全面)
ios
iReaShare17 小时前
轻松将文件从 iPhone 传输到 Mac
ios
91440623217 小时前
IOS 18下openURL 失效问题
ios
Java与Android技术栈20 小时前
macOS 为 Compose Desktop 构建跨平台图像库:OpenCV + libraw + libheif 实践
人工智能·opencv·macos·计算机视觉
杂雾无尘21 小时前
swift 基础:关联引用讲解
ios·swift·客户端
货拉拉技术21 小时前
iOS疑难Crash-iOS18.0+ BackBoardServices exit 崩溃治理
ios