【问题标题】:UIView Clipped By Statusbar until AutorotateUIView 被状态栏剪切,直到自动旋转
【发布时间】:2009-01-28 10:25:52
【问题描述】:

我创建了一个多视图应用程序,它使用多个控制器来显示和控制视图。我遇到的问题是,当模拟器最初加载视图时,标题部分被屏幕顶部的栏覆盖,并且底部的工具栏没有接触到屏幕的底部。我使用 Interface builder size 属性来控制 iphone 旋转时的视图,并且效果很好。旋转后,所有 smap 在横向和纵向模式下都完美到位,但问题在于旋转发生之前的初始加载。 非常感谢您的想法。 托尼

【问题讨论】:

    标签: iphone ios-simulator


    【解决方案1】:

    我为这个问题苦苦挣扎了好几天——在 IB 中的任何摆弄都没有奏效。

    最终我通过添加这一行来让它工作:

    mainViewController.view.frame = window.screen.applicationFrame;
    

    到应用程序:didFinishLaunchingWithOptions: 方法。 (其中 mainViewController 是主要的 UIViewController)。

    【讨论】:

    • 谢谢!手动创建主视图控制器后,我一直在努力解决这个问题。控制器中的某些内容(广告视图弹出窗口)导致视图中的子项在广告被关闭后移动了状态栏高度。
    【解决方案2】:

    我遇到了视图被状态、导航和标签栏剪切的问题。我已经通过使用 Interface Builder 中的 Simulated Metrics 功能修复了其中的大部分问题。这样一来,您在 IB 中的布局与您实际将要获得的内容更加准确。

    【讨论】:

      【解决方案3】:

      我也遇到过这个问题。具体来说,当显示ADBannerView 时,我的整个视图会移动并位于状态栏下方,并在 iPhone 屏幕底部留下一个与状态栏大小相同的空白空间。这是我解决它的方法:(亚当在这里的回答帮助我解决了这个问题):

      // In the function that displays an iAD Banner
      CGRect contentFrame = self.view.bounds;
      CGRect myStatusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
      CGFloat statusHeight = myStatusBarFrame.size.height;
      
      // Set the view's origin to be under the status bar.
      
      contentFrame.origin.y = statusHeight;
      

      我需要将视图的原点设置在状态栏下方,这为我解决了这个问题。

      【讨论】:

        【解决方案4】:

        问题是您根据 Apple 文档“错误地”添加了控制器(尽管恕我直言,Apple 设计得很糟糕 - 默认应该是您不需要移动!)

        如果您将拥有一个状态栏,Apple 要求您“手动”将所有控制器向下移动 20 像素(更准确地说,是高度状态栏的 - 虽然现在总是 20 像素,但 Apple 允许您在运行时从 UIApplication 中的“statusBarFrame”属性请求高度)

        Apple 的课程 - 例如UINavigationController / UITabBarController - 当它们被添加到屏幕时,它们会自动向下移动 20 像素。这两个类都有一个错误,即使它们不是主控制器,它们也会进行这种移动 - 所以你的应用突然向下移动了额外的 20 像素,在顶部留下了 20 像素的空白区域。

        但是,当它们轮换时,这些类通常会“正确处理”并移回原位。反之亦然。

        参考这个链接更详细地解释了正在发生的事情,以及如何按照 Apple 的要求编写代码:

        http://blog.red-glasses.com/index.php/tutorials/iphone-auto-rotation-for-intermediate-developers-tutorial-1/

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        相关资源
        最近更新 更多