1

我的应用程序需要检测呼叫进行中状态栏(绿色)的存在与否。在纵向中,当通话正在进行时状态栏变为 40px 高,因此通话状态的变化会触发我的应用程序委托中的willChangeStatusBarFramedidChangeStatusBarFrame方法。

问题是这只适用于纵向;在横向模式下,无论通话状态如何,状态栏都是 20px 高,因此在通话状态切换时根本不会调用状态栏框架更改方法。

我不想进入电话 API 以检测实际正在进行的呼叫(尽管我想我可能被迫这样做)作为检测状态栏状态的代理,因为这在模拟器中不起作用.

有什么方法可以在不依赖状态栏框架更改方法的情况下检测此状态栏状态?

4

2 回答 2

0

您可以使用启发式方法:如果从纵向旋转之前的状态栏高度较大。

于 2015-02-02T21:35:50.740 回答
0

我建议您使用 Core Telephony Framework 来检测呼叫是否正在进行,因为检查状态栏框架的变化似乎非常不可靠(即如果框架在新版本的 iOS 中发生变化怎么办?个人热点呢?如果你在通话时启动应用程序?)就像您已经发现的那样。

另一方面,您的布局不必担心此帧更改通知。您应该能够viewDidLayoutSubviews在视图控制器上调用时重新定位您的子视图,因为它会通知您有关self.view.

希望有帮助。

于 2014-05-29T15:52:07.567 回答