2012-04-09 99 views
3

我在狀態欄後面的前20px有一個問題,具體而言,我不能在其中放置任何東西。iOS - 如何回收故事板中前20px的半透明黑色狀態欄

當我創建UI時,我使用了故事板方法並將狀態欄樣式設置爲半透明黑色。但是,什麼時候在Xcode中我的視圖的高度佈局固定爲460px(變灰)。

請幫忙。


接到了一個朋友的答案,將盡快在他這裏張貼這標誌着他作爲正確答案的解決方案。現在這裏是解決方案:

  1. 在Interface Builder中設置視圖控制器爲想要全屏和自由的大小:在視圖的大小設置http://cl.ly/0x1p1u3q3B1y3b3C3U2n
  2. 那麼它的高度設置爲480像素:http://cl.ly/1p1b0e060p1Y37393D08
  3. 確保狀態欄的風格是在Info.plist的半透明黑色:http://cl.ly/153Y391S1b0G3J3z3Y1O
  4. 得到滿意的結果:http://cl.ly/0Q1M390i3A3h2F3u2T19
+0

您的意思是您想要(1)將狀態欄下的視圖置於狀態欄之下,或者(2)使狀態欄消失並使用您的應用填充屏幕的480像素高度?我認爲(1)是不可能的,儘管「半透明」意味着它對於某些東西來說是半透明的。 – Dondragmer 2012-04-10 09:35:04

+0

這是第一個選項......而且有可能,我的朋友已經幫助我完成了工作。等待他在這裏發佈他的解決方案給他信貸。 – 2012-04-10 11:26:33

回答

7

這裏是沒有的一行代碼的解決方案。

  1. 在Interface Builder中將視圖控制器設置爲想要全屏和自由大小的視圖控制器。
  2. 在視圖的尺寸設置中將其高度設置爲480px
  3. 確保Info.plist中的狀態欄樣式爲半透明黑色。
  4. 啓動和觀察

見在最高職位的每個步驟的截圖中的鏈接。

1

只需在界面構建器中設置負Y(-20)座標。

+3

嘿安東! :)問題是Y座標字段被禁用... – 2012-04-10 08:43:01

0

嘗試更改Interface Builder中屬性檢查器的「模擬度量標準」部分中「狀態欄」的值。如果你把它設置爲「推斷」,Xcode將不會對視圖控制器做任何假設,允許你將視圖的大小設置爲你想要的任意大小(即使尺寸沒有任何意義)。查看this post about the status bar以瞭解將其隱藏在您的應用中的信息。

+0

嗨,改變模擬參數的意見沒有影響模擬器的結果。 – 2012-04-10 11:25:41

+0

更改這些值只會隱藏界面構建器中的狀態欄。您還必須使用'setStatusBarHidden:...',正如我鏈接到的帖子中所討論的那樣。 – samson 2012-04-10 16:50:37

+0

目標不是隱藏狀態欄,而是讓它呈現在屏幕上,呈現半透明的黑色風格,並且能夠在其下面放置物品。 – 2012-04-11 07:58:49

2

好吧,被告知這是可能的,我嘗試在主視圖頂部放置一個視圖,並將其y座標設置爲-20。然後我西到Info.plist並將Status bar style設置爲Transparent black style (alpha of 0.5)。我放置的視圖在狀態欄下方可見。

enter image description here

這只是發生在運行時;在Interface Buider中,模擬半透明狀態欄是​​灰色但不透明的。

編輯:如果您想將視圖控制器的主視圖移動到此空間中,則有可能在viewWillAppear期間。 (如果您嘗試在viewDidLoad移動它,它就會被後來搬回。)

- (void)viewWillAppear:(BOOL)animated; 
{ 
    [super viewWillAppear:animated]; 

    // Move the main view upwards if it isn't already there. 
    CGRect frame = [[self view] frame]; 
    frame.size.height += frame.origin.y; 
    frame.origin.y = 0; 
    [[self view] setFrame:frame]; 
} 

然而,它就會被移到旋轉後回來,我試圖以旋轉響應結束打破了小區的佈局,如果我這樣做到UITableView

這是Swift版本。似乎工作。對於採取這些應用商店屏幕截圖(以及除了使Info.plist中的變化很好地解決

覆蓋FUNC viewWillAppear中(動畫:BOOL){

super.viewWillAppear(animated) 

    // Move the main view upwards if it isn't already there. 
    var frame: CGRect = self.view.frame 
    frame.size.height += frame.origin.y 
    frame.origin.y = 0 
    self.view.frame = frame 
} 
+0

如果我在故事板中有一個UITableViewController,並且我想要靜態單元,那麼這不是我真的可以做到的。 – 2012-04-10 13:48:08

+0

@Ivan Karpan:查看部分解決方案的編輯。 – Dondragmer 2012-04-11 03:20:07

+0

非常感謝您的參與。我提到我的朋友的解決方案實際上允許避免任何編碼並導致完美的工作結果。我會用它更新我的問題,並等到他在這裏發佈,這樣我就可以將其標記爲答案。 – 2012-04-11 08:00:14