Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIAlertView上方的UIView_Ios_Uiview_Z Index_Uialertview - Fatal编程技术网

Ios UIAlertView上方的UIView

Ios UIAlertView上方的UIView,ios,uiview,z-index,uialertview,Ios,Uiview,Z Index,Uialertview,在我的应用程序中,使用了锁定屏幕。有时会显示UIAlertView,现在当用户将应用程序发送到后台并再次将其带到前面时,UIAlertView会显示在锁屏上方。是否可以将UIViewController的视图添加到所有视图之上,即在UIAlertView之上?有三种UIWindowLevel,最大的一种将显示在另一个窗口之上 因此,我建议您使用UIWindow创建锁屏,并使其窗口级别大于UIWindowLevelAlert 基本上,他们的价值观是: UIWindowLevelNormal =

在我的应用程序中,使用了锁定屏幕。有时会显示
UIAlertView
,现在当用户将应用程序发送到后台并再次将其带到前面时,
UIAlertView
会显示在锁屏上方。是否可以将
UIViewController
的视图添加到所有视图之上,即在
UIAlertView
之上?

有三种UIWindowLevel,最大的一种将显示在另一个窗口之上

因此,我建议您使用UIWindow创建锁屏,并使其窗口级别大于
UIWindowLevelAlert

基本上,他们的价值观是:

 UIWindowLevelNormal = 0.000000;
 UIWindowLevel UIWindowLevelAlert = 2000.000000;
 UIWindowLevel UIWindowLevelStatusBar = 1000.000000;

这就是为什么警报视图会显示在另一个窗口上方。试试看。

您应该这样做

UIWindow *mySpecialWindowForLockScreen = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];

//"Hey iOS Please put this window above all alert view"
mySpecialWindowForLockScreen.windowLevel = UIWindowLevelAlert+100;

UIViewController *lockScreenViewController = [[UIViewController alloc]init];//Lock Screen

lockScreenViewController.view.frame = mySpecialWindowForLockScreen.bounds;

mySpecialWindowForLockScreen.rootViewController = lockScreenViewController;


// In lockScreenViewController view you can add lock screen images and other UI stuff
mySpecialWindowForLockScreen.rootViewController.view.backgroundColor = [UIColor greenColor];

[mySpecialWindowForLockScreen makeKeyAndVisible];

每当您想隐藏锁屏窗口时,只需通过设置Hidden:YES来隐藏它。

Smiler对您需要做的事情有一定的问题,所以我希望它能有所帮助。避开此问题的一种方法可能是维护您的
UIAlertView
的引用,并在应用程序进入后台时将其隐藏。当应用程序再次进入前台时,由您决定如何处理alertView引用。问得好。但我认为,
UIAlertView
应该是最重要的——这是它的职责——提醒;问题是ARC立即清理了
mySpecialWindowForLockScreen
,因此我必须为它创建一个属性。