视图框架不向下移动 20px(状态栏的高度)

Posted

技术标签:

【中文标题】视图框架不向下移动 20px(状态栏的高度)【英文标题】:view frame does not move down 20px (height of the statusbar) 【发布时间】:2015-02-16 17:24:04 【问题描述】:

我使用下面的代码来展示 vViewController1

  @property (retain,nonatomic) ViewController1 *vViewController1;

...

从 rootViewController 推送 vViewController1

  [self.navigationController pushViewController:vViewController1 animated:NO];

Viewcontroller1 的 viewWillAppear

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


    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) 
        CGRect screen = [[UIScreen mainScreen] bounds];
        if (self.navigationController) 
            CGRect frame = self.navigationController.view.frame;
            frame.origin.y = 20;
            frame.size.height = screen.size.height - 20;
            self.navigationController.view.frame = frame;

         else 
            if ([self respondsToSelector: @selector(containerView)]) 
                UIView *containerView = (UIView *)[self performSelector: @selector(containerView)];

                CGRect frame = containerView.frame;
                frame.origin.y = 20;
                frame.size.height = screen.size.height - 20;
                containerView.frame = frame;
             else 
                CGRect frame = self.view.frame;
               frame.origin.y = 20;
               frame.size.height = screen.size.height - 20;
                self.view.frame = frame;

            
        
      


但它显示如下,并没有向下移动 20px(状态栏的高度)

欢迎评论

【问题讨论】:

【参考方案1】:

假设您没有使用 Autolayout(看到您正在使用帧大小)然后在 Storyboard 中选择 ViewController,然后转到 Size Inspector(小标尺),然后调整视图的 Y 增量(更改为 20 或 - 20 取决于您“查看为”的模式)。

这可能对here 有所帮助,虽然我不确定 Y 中的 18 值,但我一直认为它是 20!

【讨论】:

我不使用 Storyboard,只是在没有自动布局的情况下查看,我的代码在 ios7 中工作但在 ios 8 中失败

以上是关于视图框架不向下移动 20px(状态栏的高度)的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8.4 状态栏动画故障

Apple Watch:状态栏高度

如何获取状态栏和软键按钮栏的高度?

手机App

Flutter:从 AppBar 中减去状态栏高度

如何确定iOS的React Native状态栏高度?