我知道已经发布了一些与此有关的问题,但是没有一个问题对我的特定问题有所帮助。我想在整个屏幕上方显示自定义模式,但是我想保持Apple状态栏可见。对于模态,我将一个UIView用于调光效果,将另一个用于与用户进行交互的实际视图。然后将整个模态作为子视图添加到当前视图,并置于最前面。本质上,除了自定义视图外,我试图复制UIAlertView的行为。这是我的一些代码:
UIView
var modalView:UIView = UIView(frame: self.view.window!.bounds) modalView.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.66) modalView.addSubview(customView) self.view.window!.addSubview(modalView) modalView.window!.windowLevel = UIWindowLevelStatusBar + 1 self.bringSubviewToFront(modalView)
上面customView是与UIView用户交互的对象。
customView
这很好用,但是由于某种原因,即使状态栏的样式设置为LightContent,Apple状态栏上的文本也只会消失。从代码中可以看出,我没有触摸状态栏。
我正在尝试使状态栏上的文本变暗,就像屏幕的其余部分一样,目前卡住了。有谁对我如何获得期望的行为有任何见解?
任何帮助将不胜感激!
编辑(2015年11月16日)
我从下面的这个线程复制我的答案:
此答案在iOS 8.3+和iOS 8的早期版本中均无效。我不建议任何人使用它,特别是因为不能保证在将来的iOS版本中都可以使用它。
我的新解决方案使用的标准presentViewController方法UIViewController。我初始化UIViewController,将自定义模态添加View为的子视图UIViewController,然后选择View使用约束定位模态。奇迹般有效!
presentViewController
UIViewController
View
原始答案
遵循Anna的建议,我使用a UIWindow代替了UIView.Here,这是我的新代码:
UIWindow
UIView.
var modalWindow:UIWindow = UIWindow(frame: self.view.window!.bounds) modalWindow.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.66) modalWindow.hidden = false modalWindow.windowLevel = (UIWindowLevelStatusBar + 1) modalWindow.addSubview(customView) modalWindow.makeKeyAndVisible()
现在它可以像以前一样正常工作,除了Apple状态栏上的文本也变暗了。非常感谢您提供的所有帮助!