Кадр UIWindow в ios 8 отличается от ios 7 в альбомной ориентации

Я создал простой модуль, в котором добавляю подвид в UIWindow. В симуляторе ios 7 (Xcode 5.1.1) я напечатал self.windows и получаю:

<UIWindow: 0x8db1670; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0x8db1a70>; layer = <UIWindowLayer: 0x8db17d0>>

но на ios8 (Xcode 6 beta 6) я получаю:

<UIWindow: 0x794320d0; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0x79437a80>; layer = <UIWindowLayer: 0x7943c400>>

Вопрос: почему существует разница в свойствах фрейма?


person edzio27    schedule 09.09.2014    source источник
comment
посмотрите здесь, stackoverflow.com/questions/24150359/   -  person Jageen    schedule 09.09.2014


Ответы (2)


Вероятно, в вашем AppDelegate вы инициализируете свой UIWindow следующим образом.

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

До iOS8 свойство bounds UIScreen возвращало ограничивающий прямоугольник физического экрана (то есть портрет), но, начиная с iOS8, границы меняются при повороте устройства документация.

Вместо этого вы можете использовать nativeBounds, если хотите получить ограничивающий прямоугольник физического экрана.

Примечание: nativeBounds возвращает экран в пикселях, а bounds возвращает его в точках.

person fdiaz    schedule 23.09.2014

Мое решение этой проблемы состояло в том, чтобы просто игнорировать:

CGAffineTransformMakeRotation

на iOS8 и теперь у меня все работает! спасибо :)

person ElizaS    schedule 06.10.2014
comment
и как вы можете это сделать? - person whyoz; 11.11.2014
comment
Не самый полезный из ответов. Хотите уточнить? - person absessive; 10.01.2015