iOS 6的重点是什么 - (BOOL)应该是什么?

bet*_*rra 12 objective-c uiviewcontroller ios6

据我所知,iOS 6上的正确做法是编写这样的代码来处理自动旋转:

// iOS 6
- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
Run Code Online (Sandbox Code Playgroud)

而不是写作

// pre-iOS 6 support
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    BOOL retVal = UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
    return retVal;
}
Run Code Online (Sandbox Code Playgroud)

说实话,我认为iOS 6之前的版本要清楚得多:我不明白有两种方法可以处理自转,特别是因为我看到所有例子都-(BOOL) shouldAutorotate返回YES了.我错过了什么吗?

das*_*ght 8

新API允许您保存呼叫以获取当前设备方向:两个问题,即

  • 无论新方向如何,应用程序是否应自动旋转,以及
  • 设备支持的方向是什么

通常是静态回答,而不是打电话来检查当前的方向.当屏幕具有由不同视图控制器控制的多个视图时,节省变得更加重要.

由于iOS正在shouldAutorotate响应来自加速度计的事件调用您的应用程序,因此它已经知道新的方向; 如果你的应用回答'是',那么iOS可以根据支持的列表检查当前方向,并在没有你的应用查询当前方向的情况下做出决定.

在不太可能的情况下,您的应用需要根据新的方向决定自动轮换,新的API并不比旧的API差,所以这是一个"胜利"的情况.