【问题标题】:iOS 7 statusbar overlapping content [duplicate]iOS 7状态栏重叠内容[重复]
【发布时间】:2015-01-21 22:48:38
【问题描述】:

我有一个相当简单的例子,我在其中编写了一个非常简单的布局:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
   self.window.rootViewController = self.someController;
   ...

现在的问题是,我的视图控制器的内容低于状态栏 (20px)。

是否推荐手动调整视图控制器大小并将其移动到底部 20px 的方法,或者有什么更聪明的方法来处理这个问题?

注意:我确实想使用例如UINavigationController.

[编辑] 为了澄清,一些更多的代码:

 - (void)applicationDidFinishLaunching:(UIApplication *)application
 {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    self.menuController = [[MenuController alloc] init];
    CalendarViewController* center = [[[CalendarViewController alloc] init] autorelease];
    IIViewDeckController* rootController = [[IIViewDeckController alloc] initWithCenterViewController:center leftViewController:self.menuController];

    rootController.leftLedge = [[UIScreen mainScreen] bounds].size.width - 320.0;
    rootController.delegate= self.menuController;

    self.window.rootViewController = rootController;

    [self.window makeKeyAndVisible];
 }

如您所见,我使用IIViewDeckController (Link) 作为根控制器。目前它看起来像这样:

【问题讨论】:

  • 不确定这是否有帮助,但您是否在 viewController 中尝试过 self.edgesForExtendedLayout = UIRectEdgeNone;
  • 根本没有改变任何东西
  • @ecnepsnai:似乎没有一个解决方案/示例适合我的情况,因为我没有 iOS 6/7 问题(我只能是 7),而且我没有任何导航控制器。跨度>

标签: ios objective-c ios7 uiviewcontroller statusbar


【解决方案1】:

在 viewDidLoad 中使用此代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

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

如果您仍然面临同样的问题,请告诉我。

【讨论】:

  • 看起来还是一样,没有变化。
【解决方案2】:

执行此操作的正确方法是将所有视图与视图控制器的topLayoutGuide 对齐。布局指南将处理将您的视图向下推送到状态栏、通话栏以及如果您稍后移动到导航控制器。

【讨论】:

  • 您能否举一个简单的例子说明如何以编程方式执行此操作?我没有使用 IB/storyboard,这是一个相当旧的现有应用程序,我不想转换。我已经在苹果文档中找到了一些关于这个的提示,但是我没有想出如何以正确的方式将它添加到我的应用程序的具体想法。
  • 您现在如何将视图添加到视图控制器中?您只是将它们添加到 viewDidLoad 调用中吗?你在使用自动布局吗?
  • topLayoutGuide 非常适合自动布局。如果您还没有使用自动布局,并且还不想转换,那么我建议您添加一个“容器视图”,以使用适当的调整大小蒙版放入您的所有内容。然后您可以在该容器视图上使用自动布局将该容器的顶部与topLayoutGuide 对齐
  • 这不是我的代码,它来自IIViewDeckController。代码在这里:github.com/Inferis/ViewDeck/blob/master/ViewDeck/…
猜你喜欢
  • 2016-01-01
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多