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\