当前位置: 首页 > article >正文

导航栏透明化方案

某些场景需要将导航栏完全透明化,实现这个效果有如下要求

  • 全局性,因此考虑分类或者在基类中实现。
  • 独立性,即不会影响其他的控制器导航的正常使用。因此考虑在viewWillAppear:设置,在viewWillDisappear:还原,这样就排除了在分类中实现的方案

代码如下:

//.h文件
#import <UIKit/UIKit.h>

@interface BaseViewController : UIViewController
/**
导航栏完全透明(包括底部的分割线)
*/
@property (nonatomic, assign) BOOL naviBarTransparent;

@end


//.m文件
#import “BaseViewController.h”

@interface BaseViewController ()

/**
当navigationController跨页面pop(即pop到上一个页面之前的页面)时,在viewWillDisappear:获取不到navigationController,因此需要一个中间变量保存
*/ @property (nonatomic, weak) UINavigationController *weakNavigationController;

@end @implementation CommonViewController

-(void)viewDidLoad {
[super viewDidLoad]; }

-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
if (_naviBarTransparent == YES) {
[self translucentNaviBar:NO];
} }

-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
_weakNavigationController = self.navigationController;
if (_naviBarTransparent == YES) {
[self translucentNaviBar:YES];
} }

-(void)translucentNaviBar:(BOOL)translucent{
if (NO == translucent) {
[_weakNavigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[_weakNavigationController.navigationBar setShadowImage:nil];
_weakNavigationController.navigationBar.barStyle = UIBarStyleDefault;
_weakNavigationController.navigationBar.translucent = NO;
}else{
UIImage *image = [UIImage new];
[_weakNavigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
//去掉透明后导航栏下边的黑边
[_weakNavigationController.navigationBar setShadowImage:image];
_weakNavigationController.navigationBar.barStyle = UIBarStyleBlack;
_weakNavigationController.navigationBar.translucent = YES;
} }
@end

http://www.lryc.cn/news/2415936.html

相关文章:

  • 晨枫U盘维护工具V2.0 安装教程
  • 挑战318川藏线
  • 外挂原理之植物大战僵尸
  • 深度xp精简版6.2_珍藏多年的精品,老机专用:深度技术WinXP SP2 V5系列
  • Struts2 基础入门
  • 亚马逊分类目录_新版亚马逊分类目录v2.4程序源码官方分享下载
  • 浅显易懂理解端口映射技术
  • 最新RemObjects,您值得拥有
  • 《Windows 核心编程》27章:硬件输入模型和局部输入状态
  • VC 调试技术与异常(错误)处理
  • Asp.net Core WebHost寄宿在Host上
  • 人小鬼大 微软优化工具TweakUI使用感受
  • discuz防灌水机制
  • 职工信息工资管理系统(设计文档+源代码+SQL文件)
  • DjangoBook完整发布了
  • 冷却水的循环方式有哪几种_工业循环冷却水处理知识---系列1
  • man使用
  • 人生哲理
  • 百度历年算法大盘点
  • MSDTC不能启动的几个解决方法
  • QQ连连看6.0 逆向分析
  • 解决mfc71u.dll文件找不到
  • 求索溪新规划题解
  • 灰鸽子病毒——网络神偷之后应用最广的反弹端口***
  • 应用程序正常初始化(0xc015002)失败解决方法
  • 富爸爸大预言
  • 中国金融集成电路(IC)卡规范
  • 微软更新,错误号: 0x80072EE2的解决方法
  • 启动应用程序出现mfc42.dll缺少问题解决
  • 收集的一些好的网址[持续更新]