1. 程式人生 > >iOS 隱藏系統的tabbar後,tabbar所在frame區域不可點選問題

iOS 隱藏系統的tabbar後,tabbar所在frame區域不可點選問題

系統自帶的UITabBarController有時候到不到要求,需要自定義樣式。

有一種方法就是在TabBar上面在放一層自己的,正好把原來的遮住。

那麼,從Tab進入子的Controller想要隱藏TabBar怎麼辦呢?

假如說你是用 TabBar + Navigation來做的,從第一個Tab——TabBar1進入子Controller(稱作A),

邏輯很簡單,就是從TabBar1點選進入A,

你需要在TabBar1點選事件(A顯示之前)加上

self.hidesBottomBarWhenPushed = YES;

然後在A的viewWillAppear中把你自己自定義,也就是覆蓋在系統TabBar上面的東西隱藏;

在viewWillDisappear中再將其顯示就可以了。

示例程式碼如下:

點選事件:


    TabNoticeController *vc = [[TabNoticeController alloc] init];

    self.hidesBottomBarWhenPushed = YES;

    [self.navigationController pushViewController:vc animated:YES];

A中的程式碼:


- (void)viewWillAppear:(BOOL)animated {

    [xxxTabBar setTabBarHidden:YES];

}

- (void)viewWillDisappear:(BOOL)animated {

    [xxxTabBar setTabBarHidden:NO];

}

// 隱藏tabar的時候,有兩種方法,一種是在壓棧前,設定 hidesBottomBarWhenPushed 為 YES

另一種是用程式碼實現效果 - (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];

    [selfhideTabBar:YES];//隱藏tabbar

}

- (void)viewWillDisappear:(BOOL

)animated {

[super viewWillDisappear:animated];

    [selfhideTabBar:NO];//顯示tabbar

}

實現方法如下:

- (void) hideTabBar:(BOOL) hidden {

    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0];

 for(UIView *view in self.tabBarController.view.subviews)

 {

 if([view isKindOfClass:[UITabBar class]])

 {

 if (hidden) {

 [view setFrame:CGRectMake(view.frame.origin.x480, view.frame.size.width, view.frame.size.height)];

 } else {

 [view setFrame:CGRectMake(view.frame.origin.x480-49, view.frame.size.width, view.frame.size.height)];

 }

 } 

 else 

 {

 if (hidden) {

 [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width480)];

 } else {

 [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width480-49)];

 }

 }

 }

    [UIView commitAnimations];

}

其中 480 根據情況設定,我這裡連  UINavigationBar  也隱藏了


相關推薦

iOS 隱藏系統tabbartabbar所在frame區域不可問題

系統自帶的UITabBarController有時候到不到要求,需要自定義樣式。 有一種方法就是在TabBar上面在放一層自己的,正好把原來的遮住。 那麼,從Tab進入子的Controller想要隱藏TabBar怎麼辦呢? 假如說你是用 TabBar + Navigatio

自定義的tabbar在跳轉之後隱藏tabbartabbar原來的位置不能響應事件這樣解決

yourInnerViewController.hidesBottomBarWhenPushed = YES; [self.navigationController pushViewControlle

iOS 隱藏導航欄UITableView向下偏移狀態列高度 筆記

解決辦法 if (@available(iOS 11.0, *)) { self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else {

iOS 隱藏導航欄UITableView向下偏移狀態列高度 筆記

解決辦法 if (@available(iOS 11.0, *)) { self.tableView.contentInsetAdjustmentBehavior = UIScrollViewC

MFC彈出選單欄滑鼠左右鍵都能問題

問題描述:彈出選單欄後,滑鼠左鍵以及右鍵都能點選選單欄中的專案? 解決辦法:檢查自己載入選單欄的程式, TPM_LEFTBUTTON定義為智慧滑鼠左鍵選擇,而另一個則可以滑鼠左右鍵同時選擇選單欄專案;  

iOS 刪除系統自帶的tabbar

一、刪除系統自帶的tabbar 在開發中,我們時常會需要自己定義tabbar,使用自定義tabbar時,返回或者跳轉時會遇到tabbar重影的現象,這個時候我們需要將系統的tabbar //

記錄一下 呼叫系統相簿重新整理相簿方法

三種方法,重新整理 Android 的 MediaStore!讓你儲存的圖片立即出現在相簿裡! //拍照完成 //第一種方法 // val absolutePath = mMediaStoreUtils.getCurrentAbs

Android中在app被系統釋放重新回到前臺時重建Activity出現Fragment重疊現象

android 開發中Frgment應用場景非常廣泛,應用Fragment是必須使用FragmentActivity,有時候會出現這樣一種情況,在應用退到後臺後,系統會在記憶體不足時將應用回收掉,再次啟動應用會出現Activity中的Fragment重疊現象,其實出現問題的原因是這樣的,

問題:windows---筆記本外接顯示器系統更新外接顯示器沒有反應右鍵開啟顯示設定檢測提示未檢測到其他顯示器

由於系統更新後,驅動程式也更新了,所以需要重新設定驅動來解決這個問題。 1.可以下載一個驅動精靈來檢測一下是否有未升級的顯示卡驅動,重新升級後,再重新啟動系統。 2.下載好了驅動也沒有改變的話就點選快捷鍵Windows+ X 進入裝置管理器頁面 顯示介面卡的位置會有一個帶有----

linux 系統系統關機mysql啟動失敗報錯:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '

自己在阿里雲伺服器上安裝好執行環境後,mysql都是正常使用的,昨天強制關閉伺服器後,重新啟動伺服器,發現數據庫無法啟動報錯:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/va

Ubuntu系統崩潰恢復我的ROS

一天下午,睡醒後,移動滑鼠,敲鍵盤ctrl鍵,不停按其它按鍵,黑屏。關電源鍵,再開機,搜一下什麼問題吧!找到問題好像是電源管理問題,裝東西吧,複製,安裝,終端卡住了。再關機重啟,一切如常,但螢幕一黑不再有桌面介面出現了。 然後就是進recovery系統,但所有的解決方案都是

遠端伺服器系統升級使用SSH登陸不上。報錯為Host key verification failed.

主要原因是:系統升級後會重新生成一份主機金鑰,然而自己的機子中儲存的確是之前的金鑰,與遠端主機發送RSA金鑰的指紋不同。所以將自己機子中的金鑰刪除即可。 報錯如下: 1.刪除known_host

11g R2 節點系統重建刪除節點及新增節點 過程和問題解決

故障現象: http://www.santongit.com/thread-12327-1-1.html    一個RAC資料庫,兩個節點,RedHat 6.3_X64的系統,因為業務問題,節點2的伺服器的系統進行了重灌。   現需要重建節點2

APP在後臺被系統回收如何重新啟動

問題: app執行在後臺,android系統會在記憶體不夠用的時候,回收app,如果app中有全域性的變數,那麼再次開啟app可能會出現崩潰的情況。 示例: 示例原始碼 public class MyApplication extends App

win10系統更新chrome瀏覽器字型亂碼解決辦法

今天早上一開機電腦就開始自動更新,我想要說明的是起初win8 和win7都沒有自動更新這個弊病,只有你點選自動更新才會更新,而win10會在你關機以後自動的就給你更新系統了。而更新完系統帶來的一些列的問題就比較棘手,所以這裡解決一下更新完系統瀏覽器亂碼的問題。 更新完系統亂

iOS 9系統策略更新微信分享無法使用解決辦法

近期蘋果公司iOS 9系統策略更新,限制了http協議的訪問,此外應用需要在“Info.plist”中將要使用的URL Schemes列為白名單,才可正常檢查其他應用是否安裝。受此影響,當你的應用在iOS 9中需要使用微信SDK的相關能力(分享、收藏、支付、登入等)時,需

系統調優不知道的TIME_WAIT和CLOSE_WAIT

http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=403319808&idx=1&sn=ddae082f5b844d040b9ab23c9c0eb778&scene=23&srcid=0311hhv2oaIbIdk

Mac系統升級按大小寫鍵沒反應了,切換大小寫的燈不亮了

今天把Mac系統升級了,升級後發現caps lock 鎖定大小寫的鍵,失靈了,居然可以用來切換輸入法了,經過一排查後, 使用以下幾種方法處理: 方式一:長按 caps lock 鍵,來切換大小寫 方式二:caps lock + shift , 來切換大小寫

Android 切換系統語言重啟App

問題描述:App->改變系統語言->重進App後,最近的Activity會走onCreate()方法,然後App被殺掉;直到第二次進入App後,App會重啟 解決方案:App->改變系統語言->重進App後,最近的Activity走到onCreate

樹莓派視窗系統啟動自動執行自定義的程式的實現方法

視窗系統啟動後,自動執行自定義的程式的實現方法進入當前使用者HOME目錄下的.config目錄(這是一個隱藏目錄,需用ls -a顯示出來)cd ~/.config 當前使用者是pi, 其HOME目錄是/home/pi, 上述命令相當於 cd /home/pi/.config建