On iOS, why is shouldAutorotateToInterfaceOrientation called 10, 12, or 13 times?

心不动则不痛 提交于 2019-12-25 08:09:53

问题


If a Single View app is created for iPad, depending on the Supported Device Orientation is set for the plist, and what shouldAutorotateToInterfaceOrientation returns, shouldAutorotateToInterfaceOrientation can be called 10, 12, or even 13 times.

One simple case is, if the "Support Device Orientation" is set to Landscape Left, and shouldAutorotateToInterfaceOrientation also returns YES only for Landscape Left, then if I start the app in Landscape Left orientation, then shouldAutorotateToInterfaceOrientation will be called 12 times in a row. If I hold it in other orientation and start the app, then it is 13 times.

What is the reason that it is called so many times in a row?


回答1:


As i can see at UIDevice.h, orientation type is not used as a mask and several requests should be performed:

  • check whether the current orientation is supported
  • if not, find the supported orientation with 1-3 or 1-4 requests

The whole process could happen more than one time for a single orientation change (e.g. the system might want to send the correct notification to the application window the status bar might want to check the orientation independently, welcome to OOP, i'm not saying it happens, but it might) while the results of the 1st or 2nd stages might be somehow cached by one component and not by another.



来源:https://stackoverflow.com/questions/10768524/on-ios-why-is-shouldautorotatetointerfaceorientation-called-10-12-or-13-times

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!