5

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

4

4 回答 4

18

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

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

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

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

于 2010-05-23T23:35:32.027 回答
3

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

于 2009-01-28T17:49:39.697 回答
1

我也遇到了这个问题。具体来说,当显示 时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;

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

于 2012-04-06T15:03:30.087 回答
0

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

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

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

但是,当他们轮换时,这些课程通常会“做对”并回到原位。或相反亦然。

cf这个链接更详细地解释了正在发生的事情,以及如何按照Apple希望你的方式编写代码:

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

于 2011-01-31T18:57:27.810 回答