Когда я создаю пользовательский интерфейс UIWindow в iOS9, окно становится видимым на экране, но строка состояния внезапно исчезает.iOS9: Пользовательский интерфейс UIWindow отключает отображение состояния
Когда окно становится скрытым, строка состояния появляется снова.
Ниже 2 скриншота из того, что я получаю на iOS9 с Xcode7 beta5.
Строка состояния в то время как пользовательские окна скрыты:
Строка состояния в то время как пользовательские окна видно: (. Весь экран перемещается к вершине)
Это код, который я (который хорошо работал на iOS8):
#define DEBUG_SHOWENV_HEIGHT 20.0f
@interface AppDelegate()
@property (nonatomic) UIWindow* envWindow;
@end
-(UIWindow*)envWindow
{
if (_envWindow == nil)
{
// Create the window
_envWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0.0f, self.window.frame.size.height, self.window.frame.size.width, DEBUG_SHOWENV_HEIGHT)];
_envWindow.rootViewController = [[UIViewController alloc] init]; // added since iOS9 to avoid the assertion
_envWindow.userInteractionEnabled = NO;
_envWindow.windowLevel = UIWindowLevelStatusBar;
_envWindow.backgroundColor = [UIColor colorWithRed:0.243 green:0.471 blue:0.992 alpha:0.8];
// Make a label
UILabel* labelEnv = [[UILabel alloc] initWithFrame:CGRectMake(8.0f, 0.0f, _envWindow.bounds.size.width - 16.0f, DEBUG_SHOWENV_HEIGHT)];
labelEnv.font = [UIFont boldSystemFontOfSize:12.0f];
labelEnv.textColor = [UIColor whiteColor];
labelEnv.text = @"DEVELOP ENVIRONMENT";
[_envWindow addSubview:labelEnv];
}
return _envWindow;
}
// ==== in applicationDidBecomeActive
// Show the window 2 seconds then hide it.
[self.envWindow.layer removeAllAnimations];
self.envWindow.frame = CGRectMake(0.0f, self.window.frame.size.height, self.window.frame.size.width, DEBUG_SHOWENV_HEIGHT);
self.envWindow.hidden = NO;
[UIView animateWithDuration:0.25f
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.envWindow.frame = CGRectMake(0.0f, self.window.frame.size.height - DEBUG_SHOWENV_HEIGHT, self.window.frame.size.width, DEBUG_SHOWENV_HEIGHT);
}
completion:^(BOOL finished) {
if (finished)
{
[UIView animateWithDuration:0.25f
delay:2.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.envWindow.frame = CGRectMake(0.0f, self.window.frame.size.height, self.window.frame.size.width, DEBUG_SHOWENV_HEIGHT);
}
completion:^(BOOL finished) {
if (finished)
{
self.envWindow.hidden = YES;
}
}];
}
}];
Буду признателен за любую помощь.
Почему у вас есть пользовательское окно, а не только 'UIViewController'? – NRitH
Поскольку я хочу, чтобы он отображался в любое время, когда приложение становится активным (даже во время переходов и т. Д.) –