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;
Другие вопросы по тегам