开发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]];
答案 0 :(得分:1)
如果您在界面构建器中,请在编辑视图时单击“大小”选项卡。在“自动调整大小”下,单击所有红色箭头,使它们消失。你不希望那里有任何红色箭头。或者在代码中,您可以执行以下操作:
browseController.autoresizingMask = UIViewAutoresizingNone;
答案 1 :(得分:0)
弹簧和支柱怎么样? (又名autoresizingMask)请参阅here。在代码中,您可能需要额外的行
[[browseController view] setAutoresizingMask:UIViewAutoresizingNone];
答案 2 :(得分:0)
你的问题没有足够的信息,但这通常是 问题(所以我做了一个有根据的猜测):
Apple指出UIWindow中只有一个UIView应存在于根级别 - 如果有多个,则很多行为未定义。通常有一个额外的一个你几周前没有注意到/忘记了。
在实践中,我发现当存在“多个”时,会发生很多这些轮换错误,Apple的代码会被混淆,并开始随机重新定位。
标准解决方法:
(因为Apple的奇怪错误只影响UIWindow本身 - 所有子视图都按预期工作“)
答案 3 :(得分:0)
我刚遇到这个问题,这就是我修复它的方法:
确保已为要附加到窗口顶层的视图定义了视图控制器。如果你不这样做,布局会对你发疯。