添加子视图时,如果应用程序处于横向模式,则视图不会调整大小

1 iphone landscape ipad addsubview ios

我有一个在Interface Builder中创建并配置为根据方向调整大小的视图.如果在应用程序处于纵向模式时创建视图并将其添加到显示中,则一切都可以正常工作.然后我可以旋转设备/模拟器,视图调整大小如我所料.但是,如果在应用处于横向模式时添加视图,则无法正确调整大小.视图的创建和大小就像应用程序仍处于纵向模式一样.该视图添加了以下代码:

self.viewController = [[MyViewController alloc] initWithNibName:nibName bundle:bundle];
[self addSubview:self.viewController.view];
Run Code Online (Sandbox Code Playgroud)

这里没有什么神奇的事情发生.此外,视图控制器指定:

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

同样,只要在纵向模式下添加视图,它就可以正常工作.我尝试了几种不同的方法,包括在视图上手动设置autoresizingMask属性,调用setNeedsLayout,以及调用layoutIfNeeded,但似乎没有任何工作.我能够手动设置框架的宽度和高度以强制视图调整大小,但这会破坏视图的动态特性.例如,如果我手动设置宽度,则不会调整高度,因为内容不会重新布局.

有任何想法吗?

小智 5

只需像这样设置您的子视图框架

self.viewController.view.frame = self.view.bounds;
Run Code Online (Sandbox Code Playgroud)