iOS9 закрывает строку состояния с пользовательским окном - неправильная позиция

Я пытаюсь закрыть строку состояния своим собственным видом и для этого вычисляю фрейм для своего представления, выполняя что-то подобное (также после поворота):

UIScreen *screen = [UIScreen mainScreen];
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;

Для iOS8+ (потому что с ios8 UIScreen зависит от ориентации):

CGRect frame = [screen.coordinateSpace convertRect:statusBarFrame toCoordinateSpace:screen.fixedCoordinateSpace];
[self setFrame:frame];

Для iOS7:

[self setFrame:statusBarFrame];

Он отлично работает для iOS8 и ниже, но при создании моего приложения с помощью Xcode 7 beta 4 и iOS 9 SDK что-то не так при запуске приложения в альбомной или вертикальной ориентации (работает нормально, если приложение запускается в портретной ориентации) ...

то есть. когда я запускаю приложение во время переворота, пользовательское окно, которое должно покрывать строку состояния, всегда будет в нижней части экрана, есть идеи, что может быть не так?

1 ответ

Без дополнительной информации лучшим решением будет просто скрыть строку состояния. Если вам все еще нужна "строка состояния" для анимации или по какой-либо другой причине, типичное решение в этом сценарии - смоделировать ее, вызвав

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates на UIScreen

и используйте возвращенный вид в качестве фона для любого представления / окна, которое вы представляете. Начиная с iOS 9, нет открытого метода, который позволил бы вам получить указанное поведение.

Другие вопросы по тегам