iOS: программное создание UIWindow приводит к неправильной позиции
В iOS 5.1.1 я обнаружил, что если я создаю свое UIWindow (я устал от IB) и устанавливаю его рамку [UIScreen mainScreen].bounds, окно появляется под строкой состояния. Однако, если я сделаю то же самое с iOS 6, он появится в нужном месте чуть ниже строки состояния.
CGRect r = [[UIScreen mainScreen] bounds];
self.window = [[UIWindow alloc] initWithFrame: r];
self.detailViewController = [[DetailViewController alloc] init];
self.window.rootViewController = self.detailViewController;
[self.window addSubview: detailViewController.view];
[self.window makeKeyAndVisible];
Однако, если я вставлю r.origin.y += 20, чтобы переместить окно ниже строки состояния в iOS 5.1.1, это не решит проблему, и все будет только страннее.
Как правильно разместить UIWindow в iOS при его программном создании? Благодарю.
2 ответа
Вместо [[UIScreen mainScreen] bounds]
вы хотите использовать [[UIScreen mainScreen] applicationFrame]
, Это будет область экрана ниже строки состояния (если она видна).
Я думаю, что вам, вероятно, нужно сделать это:
self.window.windowLevel = UIWindowLevelStatusBar + 1;