不栽跟頭,你就不會進步!
這兩天適配iOS6,在UITabBar隱藏後原區域不響應點擊事件的問題上裹足不前,異常上火(不用心,就會這樣)!
對於iOS7而言,隱藏UITabBar很容易:
self.tabBarController.tabBar.hidden = YES;
然後把self.view的高度加上個tabBar的高度(默認高度49)就ok了,可謂不費吹灰之力!iOS7以下就不行了!
這裡有一段代碼,iOS6及以上系統都可以用,我就直接粘過來了
經檢驗,可靠可用,再也不用擔心iOS6下UITabBar隱藏後該區域還死活不能響應點擊事件的問題了!
第一眼看到這段代碼時,我是視而不見啊,竟然沒去試試,事後,這也令我異常惱火(我想我應該活該)!
我同事試了一下,奏效!悔不當初 .多看一眼 .......
我分析一下這個代碼:
在iOS6上,UITabBar位於一個viewController中self.view的上面,你要是用
self.tabBarController.tabBar.hidden = YES;
然後你這樣
[self.tabBarController setTabBarItem:nil];
甚至你再這樣
[self.tabBarController.tabBar removeFromSuperView];
最後你會發現,tabBar所占的區域還是不能響應點擊事件,在iOS6上它也就占著茅坑不拉了,你真拿它沒招...
所以用上面的代碼吧!
不說啥,我只是對這種iOS6上tabBar占著茅坑不拉的行為很憤慨!
說點實用的
話說我這邊是寫的是一個繼承自UITabBarController的一個子類,在viewDidLoad方法中我發現,self.view一開始是有兩個subview的,一個就是tabBar,這個貨占著self.view下方49的高度,另一個就是contentView(我姑且這麼稱呼,具體叫啥名估計得問xcode它父親了).iOS7以下系統中當你把tabBar拿掉後,contentView是不會自動把自己的高度延展的,所以就你就得手動去幫它把tabBar的高度加上去。而iOS7及以上的系統,蘋果的開發人員應該幫我們把這活給干了,所以我們隱藏就行了。
我自己的理解,歡迎指正!