UIScreen.mainScreen имеет одинаковый размер на всех устройствах

У меня странная проблема, которая внезапно появилась. Проблема в том, что мое приложение, кажется, масштабирует мои представления, например, при смене устройства с iPhone 6 на iPhone 6 Plus. Поэтому, если у меня есть заголовок с определенным размером шрифта, тот же заголовок занимает одинаковое количество места на экране iPhone 6 Plus, когда все, что я хочу, это чтобы размер был таким же и просто казался меньше на большем устройстве. Кто-нибудь знает, как это произошло и как это исправить?

Я заметил, запустив:

NSLog(@"%f", [UIScreen mainScreen].bounds.size.width);
NSLog(@"%f", [UIScreen mainScreen].bounds.size.height);

То, что он генерирует одинаковый вывод на всех устройствах симулятора:

320
568

Я ожидаю, что на больших устройствах будет что-то другое. Это как-то связано с этим?


person Mattias Farnemyhr    schedule 22.10.2014    source источник


Ответы (4)


Вы добавили изображения запуска для устройств iPhone 6 и 6 Plus? В противном случае он будет масштабироваться в этих разрешениях (и вызов [[UIScreen mainScreen] bounds] вернет границы, как если бы он работал на 4-дюймовом устройстве).

person gutenbergn    schedule 22.10.2014

Просто добавьте новую фотографию png по умолчанию с высотой 1136.

[[UIScreen mainScreen] границ].size

вернет новую высоту 4-дюймового экрана.

person casillas    schedule 22.10.2014


Вы все еще можете работать, чтобы получить разные значения. Вот код:

  + (CGRect)screenBoundsFixedToPortraitOrientation {
        UIScreen *screen = [UIScreen mainScreen];

        if ([screen respondsToSelector:@selector(fixedCoordinateSpace)]) {
                        return [screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace];
        } 
        return screen.bounds;
    }
person casillas    schedule 22.10.2014