2017-06-21 31 views
0

我有一个呈现模态视图控制器的应用程序,我在不同的UIWindows中有一个标准ViewController和一个UIAlertController,具有正常UIWindowLevel优先级的主窗口和具有Alert UIWindowLevel优先级的Alert窗口,因为我希望始终在主UIWindow(AppDelegates引用)上以模态方式呈现的任何ViewController上方具有警报。我还有另一个具有状态栏优先级的UIWindow,当我想确保在所有内容上都有不同的 ViewController时。 因此,当我以警报UIWIndowLevel优先级呈现UIWindow并且在呈现具有状态栏UIWIndowLevel的不同窗口之后,警报窗口中的警报显示在状态栏窗口的顶部。这是有原因的吗?带有Alert级别的UIWindow位于状态栏级别

An example app screenshot I built to test in

+0

好吧,警报应该是比其他任何东西都重要的东西,需要用户立即关注。所以它显示其他所有内容并不令人惊讶。 – fishinear

+0

但是由于UIAlertController是一个在窗口顶部工作的ViewController,所以不同的窗口具有不同的级别应该覆盖警报VC。 – fredy

回答

0

所以,我一直在寻找一些许多战略目标的打开,看到这样的回答:https://stackoverflow.com/a/24262942/6784707

我打印的(0.0,2000.0,1000.0的(UIWindowLevelNormal,UIWindowLevelAlert,UIWindowLevelStatusBar)值)。但苹果的单证指出:

UIWindowLevelNormal:UIWindowLevel

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

UIWindowLevelAlert:UIWindowLevel

用于查看警报中的水平。此级别的Windows出现在UIWindowLevelNormal级别的窗口顶部。

UIWindowLevelStatusBar:UIWindowLevel

的状态窗口中的水平。此级别的Windows 出现在UIWindowLevelAlert级别为的窗口之上。

我在苹果的Bug Reporter中填充了一个bug。

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