据我所知,iOS 6上的正确做法是编写这样的代码来处理自动旋转:
// iOS 6
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
而不是写
// pre-iOS 6 support
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
BOOL retVal = UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
return retVal;
}
老实说,我认为iOS 6之前的版本要清晰得多:我不明白有两种处理自转的方法,特别是因为我看过-(BOOL) shouldAutorotate
在所有示例中返回YES
。我错过了什么吗?
答案 0 :(得分:8)
新API允许您保存呼叫以获取当前设备方向:两个问题,即
通常是静态回答,而不是打电话来检查当前的方向。当屏幕具有由不同视图控制器控制的多个视图时,节省变得更加重要。
由于iOS正在调用您的应用shouldAutorotate
以响应来自加速度计的事件,因此它已经知道新的方向;如果你的应用回答“是”,那么iOS可以根据支持的列表检查当前方向,并在没有你的应用查询当前方向的情况下做出决定。
在不太可能的情况下,您的应用需要根据新方向决定自动轮播,新API并不比旧版API差,所以这是一个“赢取”的情况。