3

我在状态栏后面的前 20px 有问题,特别是我不能在那里放任何东西。

当我创建 UI 时,我使用了故事板方法并将状态栏样式设置为半透明黑色。但是当在 Xcode 中进行布局时,我的视图高度固定为 460 像素(灰显)。

请帮忙。


从朋友那里得到答案,他将在他在这里发布时将他的解决方案标记为正确答案。现在这里是解决方案:

  1. 在 Interface Builder 中,将视图控制器设置为想要全屏和自由尺寸:http ://cl.ly/0x1p1u3q3B1y3b3C3U2n
  2. 然后在视图的大小设置中将其高度设置为 480px:http: //cl.ly/1p1b0e060p1Y37393D08
  3. 确保 Info.plist 中的状态栏样式为半透明黑色:http: //cl.ly/153Y391S1b0G3J3z3Y1O
  4. 获得满意的结果:http ://cl.ly/0Q1M390i3A3h2F3u2T19
4

4 回答 4

7

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

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

请参阅顶部帖子中每个步骤的屏幕截图的链接。

于 2012-04-11T08:36:16.657 回答
2

好的,被告知这是可能的,我尝试在主视图顶部放置一个视图并将其 y 坐标设置为 -20。然后我向西到 Info.plist 并设置Status bar styleTransparent black style (alpha of 0.5). 我放置的视图在状态栏下方可见。

在此处输入图像描述

这只发生在运行时;在 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.

这是斯威夫特版本。似乎工作。拍摄这些 App Store 屏幕截图的好解决方案(除了更改 info.plist 之外。

覆盖 func viewWillAppear(动画:布尔){

    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
}
于 2012-04-10T11:46:45.580 回答
1

只需在界面生成器中制作负 Y (-20) 坐标即可。

于 2012-04-10T08:09:01.353 回答
-1

尝试在 Interface Builder 的属性检查器的“模拟指标”部分中更改“状态栏”的值。如果您将其设置为“推断”,Xcode 将不对视图控制器做出任何假设,允许您将视图的大小设置为您想要的任何大小(即使是没有任何意义的大小)。查看有关状态栏的这篇文章,了解有关将其隐藏在您的应用中的信息。

于 2012-04-10T09:29:37.977 回答