自己在項(xiàng)目中遇到了如題所述的坑,后來發(fā)現(xiàn)其實(shí)就是tabBar控制器沒有背景色(也就是黑色)所致,參考了如下的解決方案:
轉(zhuǎn)自<a >解決 iOS View Controller Push/Pop 時(shí)的黑影</a>
iOS 自 7.x 某個(gè)版本以后,存在一個(gè) Push/Pop ViewController 時(shí)右上角會(huì)有奇怪黑影冒出的問題。
這個(gè)問題由來已久,直到昨天有個(gè)朋友向我反應(yīng)時(shí)我才重新注意起來。我以為這是 iOS 的 Bug,無法解決,但后來另一個(gè)朋友提供了一個(gè)解決方案,我才發(fā)現(xiàn)這是可以解決的,于是決定寫篇文章記錄下。
首先來看看這是什么樣的一個(gè)問題吧,這個(gè)問題在奇點(diǎn)微博客戶端上也是存在的。簡(jiǎn)單的描述就是,在列表頁中點(diǎn)擊一條微博,進(jìn)入細(xì)節(jié)頁,或者從細(xì)節(jié)頁右滑回到上頁,剛剛觸發(fā)滑動(dòng)的那一瞬間,右上角會(huì)有黑影:
我在寫這篇文章時(shí)突然發(fā)現(xiàn)盡管我看的到這個(gè)黑影,但是截圖的時(shí)候卻消失了。于是就用紅色框來描一下好了。你們可以自己親自試試。那么如何解決這個(gè)問題呢?
實(shí)際上很簡(jiǎn)單,如果這個(gè) ViewController 是在 TabBarViewController 的 NavigationViewController 上 Push/Pop 的,那么只需要把 TabBarViewController 的 View 設(shè)置一下白色背景就可以了。
建立一個(gè) UITabBarController 的子類,然后我重載 viewDidLoad 即可:
- (void)viewDidLoad {
[super viewDidLoad];
// 為了避免push時(shí)導(dǎo)航條出現(xiàn)的黑塊
self.view.backgroundColor = [UIColor whiteColor];
}
- 但是到這里為止,只解決了 50%,還有另外一種情況沒有解決,那就是如果你 present 了一個(gè) NavigationViewController + ViewController 后,在這個(gè)下面再進(jìn)行 Pop/Push 也是會(huì)有黑影的情況下。這種情況如何解決呢?
類似的,設(shè)置一下 self.navigationController?.view.backgroundColor = UIColor.whiteColor() 即可。
突然想到我昨天吐槽的iOS 的一個(gè) Bug: - iOS 的 UITableViewCell 有一個(gè)很嚴(yán)重的問題,是 7.x 某個(gè)版本以后引起的,如果給 detailTextLabel.text 設(shè)置 nil 或者 “”,再設(shè)置具體的 text 后有時(shí)會(huì)顯示不出來,但 Tap 一下能出來。具體的解決辦法是,不要設(shè)置 nil 或 “”,設(shè)置 “ ” (中間有空格)。真是讓人吐血的 Workaround。
這個(gè)問題也是類似,在某個(gè) 7.x 開始引入的。iOS 這樣細(xì)微的又不致命的 Bug 很多,真希望能到 iOS 9 全部解決掉…
嗯,就是這樣。