2014-09-03 165 views
0

我正在使用XCode + IB來佈局一個非常簡單的視圖。頂部有一個標準的NavigationController導航欄。在主視圖內部是另一個視圖,其中包含一個標籤,然後在下面的表格中佔據屏幕的其餘部分。我將標籤放在這個容器視圖中,因爲我想讓導航欄下方的區域具有背景顏色(灰色)。ios界面生成器佈局奇怪

問題是,即使主視圖從navigationBar的下方開始,標籤的容器視圖在導航欄下方存在。有點。您會看到,標籤出現在導航欄下方,但灰色背景以某種方式位於導航欄下方。如果我將標籤視圖的高度設置爲75px,它就會開始出現在導航欄下方。 (狀態欄和導航欄爲22 + 44)

禁用自動佈局。

那麼,爲什麼視圖容器在導航欄的背景下面開始? (但不是它的內部標籤?)

自IOS7以來,我在ViewController中使用它,以便內容從導航欄下面開始,而不是在它下面。

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){ 
    self.edgesForExtendedLayout = UIRectEdgeNone; 
} 

我意識到或者我可以設置主視圖的背景或使標籤尤其是大型也許並給它一個背景,但我想看看這是爲什麼不先工作。

編輯: 我給這個視圖添加了一個功能,當某些UITextFields打開鍵盤時,主視圖會向上移動125px。有趣的是,除了標籤的視圖容器外,整個視圖都移動了。當父母的觀點上下移動時,這種觀點仍然存在。然而標籤本身上下移動。所以再次,中間的觀點似乎掛窗口,而不是實際的主視圖...

IB

enter image description here

+0

關於你的實際問題,很難明確你所指的是什麼。聽起來就像你已經創建了一個UIView並定位它,以便它的y-coord正好位於導航欄的下方,並且你放置在UIView中的UILabel以某種方式呈現出UIView的邊界(即下面)這是沒有意義的) – Wizkid 2014-09-03 18:16:56

+0

標籤的容器視圖位於0,0 ...因爲UIRectEdgeNone被設置,所以它應該將其置於導航欄的正下方。標籤位於此容器視圖內,標籤正確顯示在整個屏幕上。但是,容器視圖的背景設置爲灰色,它不可見。顯然,它不在UIEdgeRectNone邏輯中,在導航欄下面?標籤和容器視圖是這樣脫節的,也沒有意義。 – Miro 2014-09-03 18:50:26

回答

0

檢查您是否已經調整上滾動視圖插圖!

轉到您的視圖控制器,它是在屬性檢查器

+0

我沒有使用故事板,但是如果我將它設置爲NO,它沒有任何作用。 – Miro 2014-09-03 18:47:22

0

你可能要考慮一個頭單元格,如果你只是希望能夠發佈只是導航欄下面的消息或指令下。你可以避免額外的UIView事情。標題單元格不會隨表格視圖一起滾動,如果這是您的擔心,它將位於nav的下方,並位於表格單元的其餘部分之上。這是一個使用自定義標題單元格設置背景顏色的簡化示例。如果您願意,也可以通過IB將UILabels等等放入單元格中。

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    MyCustomHeaderCell *headerCell = [tableView dequeueReusableCellWithIdentifier:@"MyCustomHeaderCell"]; 
    headerCell.backgroundColor = [UIColor grayColor]; 
    return headerCell; 
} 
+0

很棒的建議。我不喜歡部分標題的一件事是,當你把桌子拉得太遠時,它們會彈跳下來。或者禁用桌面上的反彈感覺不自然。 – Miro 2014-09-03 18:26:08

+0

它不應該反彈。它應該相對於非標題表格單元是固定的(它會彈跳) – Wizkid 2014-09-03 18:28:33