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
的定位和大小( UIPopoverController
, UITabBarController
等。人)。