IOS之Autorotation and Autosizing
UIInterfaceOrientationPortrait: 正常
UIInterfaceOrientationPortraitUpsideDown: 转180度
UIInterfaceOrientationLandscapeLeft: 向左转90度
UIInterfaceOrientationLandscapeRight: 向右转90度
1. 创建一个名为AutoSize项目后,单击AutoSizeViewController.m,可看到模板已提供了一个名为shouldAutorotateToInterfaceOrientation的方法。
2. 系统通过调用此方法询问视图控制器是否旋转到指定方向。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
3. interfaceOrientation参数将包含以下四个值之一,并且此方法需要返回YES或NO,以指示是否应该旋转应用程序的窗口以匹配新的方向。由于每个视图控制器子类实现此方法的方向各不相同,因此一個应用程序可能仅支持旋转部分视图,而不支持旋转其它视图。
UIInterfaceOrientationPortrait、
UIInterfaceOrientationPortraitUpsideDown、
UIInterfaceOrientationLandscapeLeft、UIInterfaceOrientationLandscapeRight
4. 若要启动自动旋转,只需將方法更改为对传入的任何值都返回YES。如
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return YES;
}
5. 若只想支持其中的一部分方向,则必须检查interfaceOrientation的值,对想要支持的值返回YES,对不想支持的值返回NO。例如要支持两个方向中的从向模式和橫向模式,但不支持旋转到倒置的纵向模式,代码如:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait ||
interfaceOrientation==UIInterfaceOrientationLandscapeLeft ||
interfaceOrientation==UIInterfaceOrientationLandscapeRight );
}
UIInterfaceOrientationPortrait: 正常
UIInterfaceOrientationPortraitUpsideDown: 转180度
UIInterfaceOrientationLandscapeLeft: 向左转90度
UIInterfaceOrientationLandscapeRight: 向右转90度