UIViewAutoresizingNone:轮换后resize

我有一个简单的IPAD结构,AppDelegate包含来自viewController的视图:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ClockVC *clockVC = [[ClockVC alloc]init]; clockVC.view.frame = CGRectMake(100, 100, clockVC.view.bounds.size.width, clockVC.view.bounds.size.height); [self.window addSubview:clockVC.view]; [self.window makeKeyAndVisible]; return YES; } 

clockVC有一个由此代码定义的viewDidLoad:

 - (void)viewDidLoad { [super viewDidLoad]; self.view.autoresizingMask = UIViewAutoresizingNone; self.view.autoresizesSubviews = UIViewAutoresizingNone; } 

clockVC的界限由IB定义,并在应用中覆盖:didFinishLaunching … Width和Height分别为200和150。

ClockVC实现了一步自动旋转的方法:/

 / Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } -(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ [UIView animateWithDuration:0.5 animations:^{self.view.alpha = 0;} ]; } -(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ [UIView animateWithDuration:1 animations:^{self.view.alpha = 1;} ]; } 

在第一次加载时,页面被正确查看并且clockVC视图就位。 当我旋转clockVC视图(其autoResizeMask设置为UIViewAutoresizingNon)时,resize以占据整个屏幕。

为什么? 我想保持初始尺寸。

这是我的问题截图。 轮换前: 在此处输入图像描述

轮换后: 在此处输入图像描述

不要使用根视图,而是将子视图添加到视图控制器的视图中。 UIViewControllers通常设计用于填充其容器的整个空间(在本例中为窗口)。

例如,如果要将UIViewController添加到UINavigationController ,导航控制器将负责根据导航控制器的布局(导航栏是否可见等)调整视图控制器视图的大小。 我不确定UIWindow的行为究竟如何(我认为这不是很清楚),但是在SDK的很多地方,视图控制器的父级负责其子UIPopoverController的定位和大小( UIPopoverControllerUITabBarController等。人)。