iOS - 如何回收故事板中前20px的半透明黑色状态栏

问题描述:

我在状态栏后面的前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

这里是没有的一行代码的解决方案。

  1. 在Interface Builder中将视图控制器设置为想要全屏和*大小的视图控制器。
  2. 在视图的尺寸设置中将其高度设置为480px
  3. 确保Info.plist中的状态栏样式为半透明黑色。
  4. 启动和观察

见在最高职位的每个步骤的截图中的链接。

只需在界面构建器中设置负Y(-20)坐标。

+3

嘿安东! :)问题是Y坐标字段被禁用... – 2012-04-10 08:43:01

尝试更改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

好吧,被告知这是可能的,我尝试在主视图顶部放置一个视图,并将其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