2014-10-22 2 views
0

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

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

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

, что его порождает тот же выход на всех тренажерных устройств:

320 
568 

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

ответ

1

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

0

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

[[UIScreen В начало] оценки] .size

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

0

Это не ошибка. Вы можете просмотреть сессию 214 от WWDC 2014 для получения дополнительной информации: "View Controller Advancements in iOS 8"

Цитата из презентации:

  • UIScreen теперь ориентированные на интерфейс:
  • [UIScreen границы] Теперь интерфейс-ориентированные
  • [UIScreen applicationFrame] теперь ориентирован на интерфейс
  • Уведомления о статусной строке состояния ориентированы по интерфейсу
  • Уведомления о кадрах фрейма ориентированы на интерфейс
0

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

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

     if ([screen respondsToSelector:@selector(fixedCoordinateSpace)]) { 
         return [screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace]; 
     } 
     return screen.bounds; 
    } 
Смежные вопросы