Ios 是否有任何防故障的方法来获取应用程序主窗口的尺寸?

Ios 是否有任何防故障的方法来获取应用程序主窗口的尺寸?,ios,objective-c,Ios,Objective C,如标题所述,是否有任何防故障方法可用于获取应用程序的可用大小?(不是实际的屏幕大小)。考虑到应用程序可能位于拆分视图上,并且我们无法访问最终应用程序(这是一个没有UI的库) 我尝试过的事情: AppDelegate窗口属性 [UIApplication sharedApplication].delegate.window.bounds; 只有当AppDelegate声明window属性时,这才起作用,大多数应用程序都会这样做,但这不能保证 应用程序密钥窗口 [UIApplication sha

如标题所述,是否有任何防故障方法可用于获取应用程序的可用大小?(不是实际的屏幕大小)。考虑到应用程序可能位于拆分视图上,并且我们无法访问最终应用程序(这是一个没有UI的库)

我尝试过的事情:

AppDelegate窗口属性

[UIApplication sharedApplication].delegate.window.bounds;
只有当AppDelegate声明window属性时,这才起作用,大多数应用程序都会这样做,但这不能保证

应用程序密钥窗口

[UIApplication sharedApplication].keyWindow.bounds;
仅当当前的
keyWindow
是应用程序的主窗口时,此功能才起作用,但它可能是覆盖或警报

屏幕边界

[UIScreen mainScreen].bounds;
[UIApplication sharedApplication].windows;
//Iterate!
当应用程序显示在拆分视图上时,此操作将不起作用

迭代所有窗口

[UIScreen mainScreen].bounds;
[UIApplication sharedApplication].windows;
//Iterate!

迭代所有可用的窗口,得到一个较大的窗口,并假设这是主窗口。这在大多数情况下都适用,但有时不适用于分割视图,因为有些窗口无法调整大小。

看起来像是尾巴在摇狗。例如,如果您提供的是视图,则会被告知框架的尺寸。换句话说,如果你想知道你的设备的宽度和高度,你需要被告知,而不必问。[UIScreen mainScreen].bounds.size.width&[UIScreen mainScreen].bounds.size.height&[UIScreen mainScreen],那么,你也许应该重新考虑这些要求。如果您的库不是恶意软件,则应故意使用。如果它是故意使用的,使用它的人可以很容易地设置所需的数据。“神奇地”做事往往不像人们想象的那样必要(和可靠)。当然,你可能还有其他原因。那就试试你的方法吧,希望是最好的。