2015-06-09 2 views
1

на любом другом устройстве, мы используем этот код, чтобы установить все виды в ландшафт и все подходит большой:iPad2 дает только неправильную ширину и высоту?

float width=[UIScreen mainScreen].bounds.size.width; 
float height= [UIScreen mainScreen].bounds.size.height; 

на IPad 2 only, для того, чтобы заставить его работать на пейзаже мы должны поменять width and height, в противном случае он ставит взгляды на портрет, и они кажутся уродливыми.

Почему это происходит только в iPad2?

+0

Что такое версия iOS для устройств? http://stackoverflow.com/questions/24150359/is-uiscreen-mainscreen-bounds-size-becoming-orientation-dependent-in-ios8? – Larme

+0

ios7. я могу видеть сейчас в 7 вы не получите реальный размер экрана! как я могу это исправить? мне теперь нужно пройти весь мой код? – Curnelious

+0

Это хорошо известная проблема, которую вы бы нашли при поиске. Проверьте ориентацию экрана. И скоро зачитайся на iOS 9, где получение экрана ограничено, я скорее всего не буду. – gnasher729

ответ

2

Не оценивайте свои взгляды относительно экрана, но относительно их вида контейнера. Просто как тот.

+0

Хороший совет, но на самом деле он не отвечает на вопрос. – Nerrolken

+0

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

3

Он не связан с устройством, а с iOS. Начиная с iOS 8.0, границы теперь зависят от ориентации устройства. Я также обменивать ширину и высоту, как это:

CGRect ScreenBounds() { CGRect bounds = [UIScreen mainScreen].bounds; CGRect tmp_bounds = bounds; if(bounds.size.width < bounds.size.height) { bounds.size.width = tmp_bounds.size.height; bounds.size.height = tmp_bounds.size.width; } return bounds; }

+0

спасибо, так положите это где? – Curnelious

+0

Я поместил это в свой код, но он никогда не вызовет эту функцию – Curnelious

+0

Так же: CGRect bounds = ScreenBounds(); Тогда используйте bounds.width и bounds.height, как вы бы сделали с кодом, который вы предоставляете – tYp

1

я такие же вопрос С IOS 8 UIScreen является интерфейс ориентирован таким образом, вы получите правильные результаты на устройствах, которые бегут на прошивке 8.

Для поддержки iOS 7 вы также можете использовать следующий способ утилизации:

+ (CGSize)screenSize { 
CGSize screenSize = [UIScreen mainScreen].bounds.size; 
if ((NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { 
    return CGSizeMake(screenSize.height, screenSize.width); 
} 
return screenSize; 
} 
+0

но как? как я могу его использовать? это переопределить оригинал ?? – Curnelious

+0

Вы можете добавить этот метод класса для использования класса или любого из ваших классов и получить его, а затем использовать suze struct для ширины и высоты. Например: CGSize sizeRect = [Utility screenSize]; float width = sizeRect.width; float height = sizeRect.height; –

+0

где используется класс? извините, я не могу понять, что делать здесь. – Curnelious

Смежные вопросы