iOS 11半透明解决

iOS11 真的是太坑了,界面偏移什么的都是小事,最头疼的是 iPhone X,状态栏 44 什么鬼,tabbar 83 ??.
1.问题描述:iOS11 以前很多界面设置了 navBar 的透明度,随着 scrollview 的滑动动态改变透明度,但是更新 iOS 11后发现在 viewWillAppear 中设置透明度后会被重新渲染(时间关系还没来得及深究),导致界面刚进来时 navBar 是完全不透明的,但是手动滑动后效果没变.

3.解决方法:在 viewWillAppear 中通过 setBackgroundImage 方法实现:
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor colorWithRed:209/255.0 green:13/255.0 blue:29/255.0 alpha:(offset / 64)>0.99?0.99:(offset / 64)]] forBarMetrics:UIBarMetricsDefault];[self.navigationController.navigationBar setShadowImage:[UIImage imageWithColor:[UIColor colorWithRed:209/255.0 green:13/255.0 blue:29/255.0 alpha:(offset / 64)>0.99?0.99:(offset / 64)]]];

这里注意一下, alpha 不能给 1 .如果给 1 系统会默认你的 VC 是位于 Nav 下方的,导致 VC 向下偏移 Nav 的高度.
在 viewWillDisappear 中置为 nil :
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];[self.navigationController.navigationBar setShadowImage:nil];//在 push 后因为 navBar 没有图片为白色,会造成下个界面 puch 出来时有白色闪光[self.navigationController setNavigationBarHidden:YES animated:NO];

在 viewDidAppear 中显示 Nav:
[self.navigationController setNavigationBarHidden:NO animated:NO];

转自:http://www.jianshu.com/p/a4eb22370644\

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

相关阅读更多精彩内容

友情链接更多精彩内容