正如标题所述,是否有任何防止故障的方法来获取应用程序的可用大小? (不是实际的屏幕尺寸)。考虑到应用程序可能位于拆分视图,并且我们无法访问最终应用程序(这是一个没有UI的库)?
我尝试过的事情:
AppDelegate窗口属性
[UIApplication sharedApplication].delegate.window.bounds;
如果AppDelegate声明了窗口属性,大多数应用程序都会这样做,那么只能 ,但是没有保证。
应用程序密钥窗口
[UIApplication sharedApplication].keyWindow.bounds;
仅当当前keyWindow
是应用程序的主窗口时才会起作用,但它可能是叠加层或警报。
屏幕范围
[UIScreen mainScreen].bounds;
当应用程序显示在拆分视图上时,这将不起作用。
遍历所有窗口
[UIApplication sharedApplication].windows;
//Iterate!
迭代所有可用的窗口,获得更大的窗口,并假设它是主要的窗口。这在大多数情况下都适用,但有时它不适用于Split View,因为有些窗口不会重新调整大小。