具有警报级别的UIWindow位于状态栏级别之上

时间:2017-06-21 12:39:08

标签: ios cocoa-touch uiwindow

我有一个提供模态View控制器的应用程序,我在不同的UIWindows中有一个标准的ViewController和一个UIAlertController,主要具有正常的UIWindowLevel优先级和Alert窗口具有Alert UIWindowLevel优先级,因为我希望始终保持警报我在主UIWindow(AppDelegates引用)上以模态方式呈现的ViewController。我还有另一个具有状态栏优先级的UIWindow,我希望肯定会有不同的时刻 ViewController在一切之上。 因此,当我使用Alert UIWIndowLevel优先级呈现UIWindow时,在我使用状态栏UIWIndowLevel呈现不同窗口后,警报窗口中的警报将显示在状态栏窗口的顶部。这有什么理由吗?

An example app screenshot I built to test in

1 个答案:

答案 0 :(得分:3)

所以,我正在看一些开放的SO,并看到了这个答案:https://stackoverflow.com/a/24262942/6784707

我打印的值(UIWindowLevelNormal,UIWindowLevelAlert,UIWindowLevelStatusBar)是(0.0,2000.0,1000.0)。但Apple的文件指出:

  

UIWindowLevelNormal :UIWindowLevel

     

默认级别。将此级别用于大部分内容,包括应用的主窗口。

     

UIWindowLevelAlert :UIWindowLevel

     

警报视图的级别。此级别的Windows显示在UIWindowLevelNormal级别的窗口顶部。

     

UIWindowLevelStatusBar :UIWindowLevel

     

状态窗口的级别。此级别的Windows 显示在UIWindowLevelAlert级别的窗口顶部

我填写了Apple的Bug Reporter中的一个错误。

我的解决方案是创建一个值超过2000的CGFloat并将其添加到windowLevel。