iOS11适配-导航栏透明的适配

iOS11之后,navigationBar的子视图层级更改了,但是还是可以使用如下代码控制导航栏的透明

1. 获取navigationBar控制导航栏颜色的视图

self.barImageView = self.navigationController.navigationBar.subviews.firstObject;

2. 之前是这样写的

-(void)viewWillAppear:(BOOL)animated{

   [super viewWillAppear:animated];

   [UIView animateWithDuration:0.25 animations:^{

           self.barImageView.alpha = 0.0f;

  }];

}

-(void)viewWillDisappear:(BOOL)animated{

     [super viewWillDisappear:animated];

    [UIView animateWithDuration:0.25 animations:^{

    self.barImageView.alpha = 1.0f;

   }];

}

在控制器的生命周期中,都在will方法中控制器导航栏的透明度,这在ios11之前是ok的,但是在ios11的系统中,这个控制器push别的控制器在返回来的时候会出现这种情况,如图:



push的控制器的导航栏的颜色是白色,返回来的时候,在viewWillAppear方法中未能够将导航栏改为透明。

解决办法: 将控制透明度的代码放到viewDidAppear中就可以了。


-(void)viewDidAppear:(BOOL)animated{

[super viewDidAppear:animated];

[UIView animateWithDuration:0.25 animations:^{

self.barImageView.alpha = 0.0f;

}];

}

-(void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

[UIView animateWithDuration:0.25 animations:^{

self.barImageView.alpha = 1.0f;

}];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容