我有一个在 Interface Builder 中创建并配置为根据方向调整大小的视图。如果在应用程序处于纵向模式时创建视图并将其添加到显示中,则一切正常。然后我可以旋转设备/模拟器,并按照我的预期调整视图大小。但是,如果在应用程序处于横向模式时添加视图,它不会正确调整大小。视图的创建和大小就像应用程序仍处于纵向模式一样。该视图添加了以下代码:
self.viewController = [[MyViewController alloc] initWithNibName:nibName bundle:bundle];
[self addSubview:self.viewController.view];
这里没有什么神奇的事情发生。此外,视图控制器指定:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
同样,只要在纵向模式下添加视图,它就会按预期工作。我尝试了几种不同的方法,包括在视图上手动设置 autoresizingMask 属性、调用 setNeedsLayout 和调用 layoutIfNeeded,但似乎没有任何效果。我可以手动设置框架的宽度和高度以强制调整视图大小,但这会破坏视图的动态特性。例如,如果我手动设置宽度,则高度不会调整,因为内容不会重新布局。
有任何想法吗?