2015-03-31 106 views
0

我有一個TableViewController並在它我創建一個UIView編程即狀態欄的寬度和高度,並且具有一個彩色背景。基本上,它作爲狀態欄的背景:添加一個UIView到TableViewControllers查看

let statusBarBG = UIView(frame: CGRectMake(0, 0, widthOfScreen, 20)) 
statusBarBG.backgroundColor = UIColor... 
self.view.addSubView(statusBarBG) 

然而,當我拖動表上下這個狀態欄背景與整個表視圖移動時,所看到的如下圖(左邊是如何它通常看起來,紅色的更大的部分是我的導航欄的BG):

enter image description here

所以我的問題是:如何創建這個tableViewController這更像是一個兄弟給的tableView,而不是內部的視圖一個隨它移動的孩子?謝謝。

回答

3

如何在這個tableViewController裏面創建一個更像tableView的同級的視圖,而不是像它一起移動的孩子?

不幸的是,對於tableviewcontroller,這是不可能的,因爲tableviewcontroller的視圖是UITableView實例,而UITableView實例又是UIScrollView的子類。基本上,您作爲scrollview的子項放入的任何內容都會隨之滾動。

一種更好的方法是從使用tableviewcontroller移開,並使用正常的視圖控制器具有嵌入的表視圖來代替。您甚至可以通過將其添加到層次結構來重用您的視圖控制器。

另一(更容易)的方法是處理的UITableView的滾動委託方法,並根據該偏移調整頁眉視圖的Y位置。

+0

有意義。我的程序不停,當我試圖嵌入裏面的ViewController一個UITableView由於某種原因(儘管我拖着委託和數據源到控制器)崩潰,但我必須明白這一點。我會試一試,謝謝。 – 2015-03-31 23:06:51

1

你可以只使用一個圖像,如果你只需要那些爲了像背景顏色。

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; 

,或者如果你想只是一種顏色,而不是自定義圖像使用imageWithColor ...在你的照片,它看起來像你想整個導航欄+狀態欄正當紅的......所以這個代碼是爲整個導航欄+狀態欄...如果你想在狀態欄不同的只是設計的圖像,並使用該代碼......我不是一個人迅速抱歉,但它應該是非常相似......

編輯:啊你不使用導航控制器中的tableView?那麼它可能無法正常工作......

編輯2:

這是我的形象 enter image description here

與此代碼

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; 

我得到

enter image description here

沒有它的理由t clean

enter image description here

+0

我改變了我的TableViewController到一個普通的ViewController,詳見maranas的答案,並創建了一個UIView作爲狀態欄的背景,它一切正常。但是,您的方法可能是更好的選擇,因爲是的,我的視圖嵌入在NavigationController中。與此相關的問題是導航欄沒有伸展到頁面的頂部,狀態欄上方,所以頂部的矩形是白色的(無色)。設置其圖像是否允許我到達該區域,而不是僅設置背景顏色? – 2015-04-01 01:26:06

+0

我只設置了一個圖像(請參閱我的代碼),是的它覆蓋了所有,導航欄和上面的stauts欄...以及這是iOS7和iOS8 ..不知道,但我認爲蘋果改變了一些東西與導航欄和iOS7中的狀態欄相比,iOS6 – Kreuzberg 2015-04-01 02:17:44

+1

ps但是我學到的是,使用tableviewcontroller是愚蠢而無用的,因爲你不能改變任何東西,如果你在桌面視圖的按鈕上附加一個廣告橫幅,你不能調整表格的大小以便爲廣告橫幅和最後一行留出空間的表格在廣告橫幅下,並且不可觸摸......這只是一個例子,所以擁有普通的視圖控制器總是比較好,並且只需使用tableview控制器即可放置一個表格......只是我的體驗... – Kreuzberg 2015-04-01 02:35:50