2009-01-28 50 views
5

我创建了一个使用多个控制器来显示和控制视图的多视图应用程序。我遇到的问题是,当模拟器最初加载视图时,标题部分被屏幕顶部的栏覆盖,并且基部的工具栏未触及屏幕底部。我使用“界面”构建器大小属性来控制iPhone旋转时的视图,并且它完美地工作。在旋转之后,所有材料都可以在横向和纵向模式下完美地进入到位,但问题在于旋转发生之前的初始负载。 您的想法非常感谢。 TonyUIView被状态栏剪切直到自动旋转

回答

3

我遇到了状态,导航栏和标签栏夹住视图的问题。我通过使用Interface Builder中的Simulated Metrics功能修复了大部分功能。这样你在IB中的布局就会更准确地得到你实际得到的结果。

18

我在这个问题上挣扎了好几天 - 在IB工作中没有太多的摆弄。

最终我得到了它通过加入这一行的工作:

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

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

+0

谢谢!手动创建我的主视图控制器后,我一直在努力解决这个问题。控制器中的某些内容(广告查看弹出窗口)导致视图中的子项在广告被解散后通过状态栏高度进行移位。 – DPlusV 2010-08-23 06:25:06

+1

+1,因为我浪费了两个小时试图找到这个答案! – 2010-11-04 04:49:53

0

的问题是,你是根据苹果的文档添加控制器“错误地”(恕我直言,虽然苹果设计的很糟糕 - !默认的应该是你不需要转移)

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

Apple's classes - eg UINavigationController/UITabBarController - 当它们被添加到屏幕时,自动向下移动20个像素。这两个班都有一个错误,他们会做这种转变即使他们不是主要控制器 - 所以你的应用程序突然下移额外的20个像素,留下20个像素的白色空间顶部。

但是,当他们旋转时,这些类通常“得到它的权利”,并回到原地。或相反亦然。

c.f.此链接,这是怎么回事,以及如何更详细的解释,编写代码苹果希望你的方式:我就遇到了这个问题太

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

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; 

我需要设置我的观点的起源是状态栏的下方,而解决这个问题对我来说。