iPad / iPod:autoRotate在窗口中调整视图大小

时间:2010-05-26 18:19:59

标签: iphone uikit ipad uiviewcontroller

开发iPad界面,我有一个场景,我有一个UIViewController,它管理一个直接作为主UIWindow的子视图放置的视图。

在放入UIWindow之前,该视图会调整为非标准尺寸,例如768x460,并位于屏幕底部。

旋转设备时,UIViewController的autoRotate功能会调整视图大小,使其填满整个UIWindow空间。

我认为这可能是因为在XIB中,视图设置为窗口大小,但是当我更改它以反映所需的大小时,它仍然将其扩展为窗口大小。

然后我进入MainWindow XIB并关闭autoresizeSubviews,它仍然会发生。

这是一个非常令人沮丧的问题,我希望只有一些我想念的东西显而易见。

任何人都有任何好主意吗?

按要求编码:

browseController = [[BrowseController alloc] initWithNibName:@"BrowseController" bundle:nil];

[[browseController view] setFrame:CGRectMake(0, 544, 768, 460)];

[window addSubview:[browseController view]];

4 个答案:

答案 0 :(得分:1)

如果您在界面构建器中,请在编辑视图时单击“大小”选项卡。在“自动调整大小”下,单击所有红色箭头,使它们消失。你不希望那里有任何红色箭头。或者在代码中,您可以执行以下操作:

browseController.autoresizingMask = UIViewAutoresizingNone;

答案 1 :(得分:0)

弹簧和支柱怎么样? (又名autoresizingMask)请参阅here。在代码中,您可能需要额外的行

[[browseController view] setAutoresizingMask:UIViewAutoresizingNone];

答案 2 :(得分:0)

你的问题没有足够的信息,但这通常是 问题(所以我做了一个有根据的猜测):

Apple指出UIWindow中只有一个UIView应存在于根级别 - 如果有多个,则很多行为未定义。通常有一个额外的一个你几周前没有注意到/忘记了。

在实践中,我发现当存在“多个”时,会发生很多这些轮换错误,Apple的代码会被混淆,并开始随机重新定位。

标准解决方法:

  1. 在您制作的每个应用中
  2. ...总是有一个空的,“MyRootViewController”,你添加到UIWindow
  3. ...然后根据需要添加任意数量的视图作为其中的子视图
  4. (因为Apple的奇怪错误只影响UIWindow本身 - 所有子视图都按预期工作“)

答案 3 :(得分:0)

我刚遇到这个问题,这就是我修复它的方法:

确保已为要附加到窗口顶层的视图定义了视图控制器。如果你不这样做,布局会对你发疯。