Я создаю ландшафтное приложение в Xcode 6. Когда я запускаю его на симуляторе iOS 8.3, [UIScreen mainScreen].bounds
- это 667x375
, но когда я запускаю его на iPhone 6 iOS 8, [UIScreen mainScreen].bounds
375x667
. Это вызывает проблемы для моего приложения, так как многие элементы имеют размер экрана. Я знаю, что [UIScreen mainScreen].bounds
изменен в iOS 8, но это не проблема. Это должно быть 667x375
как на устройстве, так и на симуляторе. Я бы предоставил код, но я понятия не имею, где проблема.[UIScreen mainScreen] .bounds дает неправильное значение
ответ
На iOS8 рамка окна будет меняться как ориентация устройства. Я думаю, что размер 667x375 - это размер вашего устройства.
iOS 8.3 iPhone6 Simulator
Portlait
bounds:{{0, 0}, {375, 667}}
applicationFrame:{{0, 20}, {375, 647}}
nativeBounds:{{0, 0}, {750, 1334}}
Landscape
bounds:{{0, 0}, {667, 375}}
applicationFrame:{{0, 0}, {667, 375}}
nativeBounds:{{0, 0}, {750, 1334}}
iOS 8.3 iPhone6 Device
Portlait
bounds:{{0, 0}, {375, 667}}
applicationFrame:{{0, 20}, {375, 647}}
nativeBounds:{{0, 0}, {750, 1334}}
Landscape
bounds:{{0, 0}, {667, 375}}
applicationFrame:{{0, 0}, {667, 375}}
nativeBounds:{{0, 0}, {750, 1334}}
На iOS 8.3 результаты симулятора и устройства точно такие же. Если сообщаемая ситуация возникает только на устройстве iOS 8, как насчет таргетинга вашего приложения на iOS 8.3?
Это был мой опыт (на iOS 8.1.3, 8.2 и 8.3). – zpasternack
Вот метод быстрого класса я использую, чтобы изменить размер экрана вернуться к тому, что было раньше IOS 8 (высота переключения и ширина)
+ (CGSize)getScreenSize {
CGSize screenSizeRef = [[UIScreen mainScreen] bounds].size;
if (screenSizeRef.width > 450 && UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
// iPhone 6+ width on portrait is 414
return CGSizeMake(screenSizeRef.height, screenSizeRef.width);
}
if (screenSizeRef.width > 900 && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return CGSizeMake(screenSizeRef.height, screenSizeRef.width);
}
return screenSizeRef;
}
Так вместо вызова [[UIScreen mainScreen] bounds]
, поставить этот метод в новом классе (чтобы вы могли получить доступ к нему из любой точки программы) и установите ссылку на размер экрана на возвращаемое значение getScreenSize
- 1. "[[UIScreen mainScreen] bounds]" возвращает null?
- 2. [UIScreen mainScreen] .bounds Разное iOS 8?
- 3. iPad: [UIScreen mainScreen] .bounds возвращает неправильные координаты
- 4. [UIScreen mainScreen] .bounds возвращает неправильную ширину, высоту
- 5. iPad неправильный [[UIScreen mainScreen] bounds]. Размеры размера
- 6. [UIScreen mainScreen] .bounds vs [UIApplcation sharedApplication] .keyWindow.bounds?
- 7. UIScreen возвращает неправильное значение?
- 8. (масштаб [UIScreen mainScreen]] 2.0) & ([[UIScreen mainScreen] bounds] .size.height == 568.0) не работает
- 9. Почему [UIScreen mainScreen] .bounds] не возвращает полный размер экрана?
- 10. возвращаемое значение [UIScreen mainScreen] .bounds.size.height на iphone 6
- 11. UIScreen mainScreen bounds возвращает границы iPad 2 на iPad Air 2
- 12. iPhone 6 плюс реальное устройство UIScreen mainScreen size strange
- 13. Изменение размера элементов в UIView и использование границ [[UIScreen mainScreen]]
- 14. Altenative [UIScreen mainScreen] .nativeScale для поддержки iOS 7?
- 15. Правильные значения возврата для прямоугольника = [[UIScreen mainScreen]); (IOS)
- 16. «[[UIApplication sharedApplication] statusBarOrientation]; дает неправильное значение при первом вызове«
- 17. R.id.home дает неправильное значение?
- 18. ListViewHitTestInfo.Item.SubItems.IndexOf дает неправильное значение
- 19. GetProcessAffinityMask дает неправильное значение
- 20. Calendar.MONTH дает неправильное значение
- 21. CGRectContainsRect дает неправильное значение
- 22. Почему размер экрана UIScreen mainScreen равен 568 для устройства iPhone6?
- 23. Кто-нибудь мог использовать [[UIScreen mainScreen] setBrightness] на фоне/выходе?
- 24. NSNumber дает неправильное значение int
- 25. внешнийHeight (true) дает неправильное значение
- 26. String.length() дает мне неправильное значение
- 27. mysql_fetch_assoc() дает мне неправильное значение
- 28. sizeof (* this) дает неправильное значение
- 29. TCP Socket дает неправильное значение
- 30. MYSQL TIMESTAMPDIFF() дает неправильное значение
Тогда почему мой iPhone 6 NSLog, что ориентация «375x667» при запуске приложения без изменений на iPhone 6 симулятор NSLogs '667x375'? – TheCodeMan54
Может быть, ваш симулятор - это пейзаж на одном 6+ и портрет на 6. Попробуйте настроить ориентацию вашего симулятора на cmd + влево/вправо. – user3349433
Спасибо за предложение, но мой симулятор в пейзаже. Приложение действительно отлично работает в симуляторе, но не в устройстве. Физическое устройство, как представляется, дает неверные оценки. – TheCodeMan54