我的应用需要检测呼叫进行中状态栏的存在与否(绿色)。在纵向方向上,当呼叫正在进行时状态栏变为40px高,因此呼叫状态的更改会触发我的应用委托中的willChangeStatusBarFrame
和didChangeStatusBarFrame
方法。
问题是这只适用于肖像;在横向方向上,无论呼叫状态如何,状态栏都是20px高,因此当呼叫状态切换时,状态栏框架更改方法根本不会被调用。
我不想进入电话API以检测实际正在进行的呼叫(虽然我想我可能会被迫这样做)作为检测状态栏状态的代理,因为这不起作用在模拟器中。
有没有办法在不依赖状态栏框架更改方法的情况下检测此状态栏状态?
答案 0 :(得分:0)
我建议您使用核心电话框架来检测呼叫是否正在进行,因为检查状态栏框架更改似乎非常不可靠(即如果在新版本的iOS中框架发生变化会怎样?个人热点怎么样?如果你已经在通话中启动应用程序怎么办?)就像你已经发现的那样。
另一方面,您的布局不应该担心此帧更改通知。您应该能够在视图控制器上调用viewDidLayoutSubviews
时重新定位子视图,因为它会通知您有关self.view
的边界更改。
希望有所帮助。
答案 1 :(得分:0)
您可以使用启发式方法:如果从纵向旋转之前的状态栏具有较大的高度。