【问题标题】:How to set the top position = 0 after setStatusBarHidden:Yes?如何在 setStatusBarHidden:Yes 之后设置顶部位置 = 0?
【发布时间】:2010-10-05 21:40:22
【问题描述】:

设置后发现

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]

viewDidLoad,那么如果我想将图像对齐到顶部,我需要将其位置设置为.y = -20;

有没有办法将 top position 的 y 坐标设为 0 ?还是隐藏状态栏后注定是-20?

感谢阅读。

【问题讨论】:

    标签: iphone xcode


    【解决方案1】:

    我曾经遇到过类似的问题,这段代码为我解决了这个问题:

    [viewController.view setFrame: [viewController.view bounds]];
    

    【讨论】:

    • [self.view setFrame: [self.view bounds]];
    • 使用 view.bounds (至少对我而言)正确地将视图移动到 0,0,但仍然在 底部 留下 20px 的间隙(因为我的视图的背景颜色很明显不是白色的)。这有效:[self.view setFrame: [[UIScreen mainScreen] bounds]];
    • 这个答案完全没有意义。很明显,您最终会在视图底部出现 20 点的差距。有人可以将此作为正确答案吗?
    【解决方案2】:

    贾斯汀加拉格尔的解决方案几乎是正确的,但有一个主要的副作用。

    隐藏状态栏然后将视图的框架设置为其自己的边界将在当前方向上起作用。 但旋转会很丑。例如,如果您是纵向的,将设备旋转到横向会导致整个视图的框架向右移动 256 点,从而在屏幕上留下一个大的黑色空间。

    bmoeskau 在上面的 cmets 中的解决方案(另一个副作用)避免了这个问题:

    [self.view setFrame: [[UIScreen mainScreen] bounds]];
    

    【讨论】:

      【解决方案3】:

      我想如果你希望状态栏从一开始就被删除,你应该在 Info.plist 中添加一个 UIStatusBarHidden 项。

      Discussion@apple.com

      您还可以考虑设置 Autosizing 以调整垂直(和水平)大小

      请参阅 添加文本视图 here 下的示例,了解在 InterfaceBuilder 中单击的内容

      引用:

      单击内部框中的水平线和垂直线,使它们变为实心红线。动画预览显示文本视图的内部大小将随窗口增大和缩小。

      【讨论】:

      • 非常感谢您的回复,但这对我没有好处..将其设置为 YES/true 仍然无法删除状态栏...然后我发现代码可以代替添加此密钥。我想我一定做错了什么
      【解决方案4】:

      检查以确保您的笔尖中的根视图的大小正确设置为 480x320。一些模板项目会在 460x320 上创建这些模板项目以说明状态栏。如果您加载跨全屏的视图并且隐藏状态栏,它应该可以正常工作,您根本不需要做任何特别的事情。

      【讨论】:

      • 感谢您的回复,我已经设置为 480x320,但之后在顶部留下了 20 像素的空白。
      【解决方案5】:

      如果您有一个嵌套在视图中的滚动视图,请确保也更改它。这段代码解决了我所有的问题。

      [self.view setFrame: [self.view bounds]];
      [self.theScroller setFrame: [self.view bounds]];
      

      “theScroller”是我的滚动视图的名称。

      【讨论】:

        【解决方案6】:

        以下解决方案正常工作

        • 在 iOS 6 和 iOS 7 上,
        • 用于隐藏和显示状态栏,
        • 纵向和横向,并且
        • 即使通话状态栏可见

        在您的视图控制器中,添加这些:

        - (BOOL)prefersStatusBarHidden  // For iOS 7.0 or above.
        {
            return _isStatusBarHidden;
        }
        
        // Call this method to show / hide the status bar and resize the view.
        - (void)setStatusBarHidden:(BOOL)isStatusBarHidden
        {
            _isStatusBarHidden = isStatusBarHidden;
        
            // For iOS 7.0 or above...
            if([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
            {
                // Update status bar visibility.
                [self setNeedsStatusBarAppearanceUpdate];   // Tell the view controller that the return value of -prefersStatusBarHidden has changed.
            }
            // Otherwise...
            else
            {
                // Show or hide status bar.
                [[UIApplication sharedApplication] setStatusBarHidden:_isStatusBarHidden withAnimation:UIStatusBarAnimationNone];
        
                // Resize view.
                self.view.frame = [UIScreen mainScreen].applicationFrame;
            }
        }
        

        这里,BOOL _isStatusBarHidden; 是视图控制器类的成员变量。

        注意事项:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-28
          • 1970-01-01
          • 2019-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多