iOS 11半透明解決

iOS11 真的是太坑了,界面偏移什么的都是小事,最頭疼的是 iPhone X,狀態(tài)欄 44 什么鬼,tabbar 83 ??.
1.問題描述:iOS11 以前很多界面設(shè)置了 navBar 的透明度,隨著 scrollview 的滑動動態(tài)改變透明度,但是更新 iOS 11后發(fā)現(xiàn)在 viewWillAppear 中設(shè)置透明度后會被重新渲染(時間關(guān)系還沒來得及深究),導(dǎo)致界面剛進來時 navBar 是完全不透明的,但是手動滑動后效果沒變.

3.解決方法:在 viewWillAppear 中通過 setBackgroundImage 方法實現(xiàn):
[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 系統(tǒng)會默認你的 VC 是位于 Nav 下方的,導(dǎo)致 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];

轉(zhuǎn)自:http://www.lxweimin.com/p/a4eb22370644\

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容