本文共 1558 字,大约阅读时间需要 5 分钟。
如图所示,这个界面的背景是一张偏黑色的背景图片。有意思的是,这张图片作为背景,严丝合缝的穿透了导航栏,以及导航栏下面的控制器,使整个页面看起来更加像一个整体。
兄弟们,项目里面很有可能会遇到这种需求,比如说我。废话不多说,如何实现这种效果呢
ps:以前看过我上一篇简书里面提到的抽取出来的一个公共类WXNavigationController,下面的代码就加在这个公共类中即可
下面代码的是将导航栏self.navigationBar变透明,这里变透明是将self.navigationBar设置一张透明的背景图片,这样当你设置导航栏下的背景图片的时候,背景图片不会被覆盖掉
- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"bigShadow"] forBarMetrics:UIBarMetricsCompact]; //compact:及时更新背景样式,让导航条彻底透明,不显示底部那条线。 maskToBounds:不让透明图片影响状态栏 self.navigationBar.layer.masksToBounds = YES;}
抽取公告类的好处是,只用在这个地方设置一下背景图片就OK了,这样所有的页面都会变成同一个背景图片
#pragma mark -推出另外一个控制器的逻辑控制- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { //设置所有界面的背景图片 UIImageView * backImageView = [UIImageView ff_imageViewWithImageName:@"Rectangle 363"]; [viewController.view insertSubview:backImageView atIndex:0]; [backImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(viewController.view); }]; if (self.childViewControllers.count > 0) { // 设置返回按钮 viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem ff_barButtonWithTitle:@"" imageName:@"Chevron" target:self action:@selector(goBack)]; } [super pushViewController:viewController animated:animated];}
self.tableView.contentOffset = CGPointMake(0, 64);
转载地址:http://sltsn.baihongyu.com/